自学内容网 自学内容网

[Python学习篇] Python类

类是什么?

在 Python 中,类是一种创建对象的模板,定义了对象的属性和方法。通过类可以创建具有相同属性和行为的对象实例。

什么是属性?

属性即是特征,比如:人类的名字、年龄、身高、体重...等特征。

什么是方法?

方法即是动作,比如:人类吃饭、搬砖...等行为。

定义类

语法:

class 类名(父类名):

    属性
    初始化方法

    实例方法
    ......

注意:

类名要满足标识符命名规则,同时要遵循大驼峰命名习惯。类名后面的小括号`()`是写继承的类名的。如果没有继承,可以省略小括号,比如 `class 类名:`

示例:定义类,并使用类创建对象

# 创建类
class Test:

    # 定义属性
    name = "我是变量,在类中我叫属性"

    # 定义初始化方法
    def __init__(self):
        print("我是初始化方法")

    # 定义实例方法
    def test(self):
        print("我是普通函数,在类中我叫实例方法")


# 使用类
# 通过类创建的变量,这里叫做对象
test = Test()  # 使用类创建一个对象,这里创建对象时使用的是初始化方法
print(test.name)  # 使用类中的属性
print(test.test())  # 使用类中的实例方法

self 讲解

class Test:
    name = "我是变量,在类中我叫属性"

    # self 是指向这个类的对象,用于引用调用类中的属性和方法。
    def test(self):
        # 比如我在类中想使用类中的属性或者方法。
        # print(name) #这种方法语法报错
        print(self.name)  # self.name 可以调用成功


test = Test()
test.test()

类外面添加对象属性

语法:

对象名.属性名 = 值

示例:

class Test:
    name = "Tom"


test = Test()
# 添加属性
test.age = 18

# 使用属性
print(test.age)

类里面使用对象属性/方法

语法:

self.属性名

self.方法名()

示例:

class Test:

    def hello(self):
        # 类中使用类外的属性
        print(self.age)


test = Test()
# 类外添加属性
test.age = 18

print(test.hello())

魔法方法

在Python中, __xx__() 的函数叫做魔法方法(Magic Methods),也被称为双下划线方法(Dunder Methods),指的是具有特殊功能的函数,并与 Python 的内置操作符和函数交互。

`__init__` 初始化方法,构造函数。

class Test:
    def __init__(self, name, age):
        self.name = name
        self.age = age

test = Test('Tom', 18)
print(test.name)  # Tom
print(test.age)  # 18

`__dict__` 打印对象的所有属性值。vars()也是这个作用。

class Test:
    def __init__(self, name, age):
        self.name = name
        self.age = age

test = Test('Tom', 18)
print(test.__dict__)  # {'name': 'Tom', 'age': 18}
print(vars(test))  # {'name': 'Tom', 'age': 18}

`__str__`  print 打印对象时以字符串表示形式。同比java中的toString方法

class Test:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'Test(name={self.name}, age={self.age})'

test = Test('Tom', 18)
print(test)  # Test(name=Tom, age=18)
print(test.__str__())  # Test(name=Tom, age=18)
print(str(test))  # Test(name=Tom, age=18)

`__repr__` 与 __srt__类似,下面是它们的比较

class Test:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'Test(name={self.name}, age={self.age})'

    def __repr__(self):
        return f'Person({self.name!r}, {self.age!r})'


test = Test('Tom', 18)
print(test)  # Test(name=Tom, age=18)
print(repr(test))  # Person('Tom', 18)

`__call__` 可以让对象像方法一样被调用。作用是可以隐式的调用类中其他的方法,已经由call显示的调用了其他方法。

class Test:
    name = 'Tom'

    def __call__(self):
        self.hello()

    def hello(self):
        print(f"hello {self.name}")


test = Test()
# 我们想调用类中的 hello 方法时,可以直接这样调用,hello已经由call调用了
test()  # hello Tom

`__del__` 析构函数,在对象被垃圾回收(或者我们主动使用del函数)时被调用。用于执行一些清理操作,例如关闭文件、释放资源等。

class Test:
    name = 'Tom'

    def __del__(self):
        # 这里可以写一些关闭资源的操作
        print(f"对象已经被删除.")


test = Test()
del test  # 对象已经被删除.

Python中还有什么很多魔法方法,这里就不一一演示了。

完。


原文地址:https://blog.csdn.net/a1053765496/article/details/140246573

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!