类是什么?
在 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 = 18print(test.hello())
魔法方法
在Python中, __xx__() 的函数叫做魔法方法(Magic Methods),也被称为双下划线方法(Dunder Methods),指的是具有特殊功能的函数,并与 Python 的内置操作符和函数交互。
`__init__` 初始化方法,构造函数。
class Test:def __init__(self, name, age):self.name = nameself.age = agetest = Test('Tom', 18)
print(test.name) # Tom
print(test.age) # 18
`__dict__` 打印对象的所有属性值。vars()也是这个作用。
class Test:def __init__(self, name, age):self.name = nameself.age = agetest = 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 = nameself.age = agedef __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 = nameself.age = agedef __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中还有什么很多魔法方法,这里就不一一演示了。
完。