【Python函数】魔法函数
1.定义
以__开头和结尾的函数
2.好处
为类增加额外的功能
3.常见的魔法函数
- __init__()
- 作用:初始化对象的属性
- 调用时机: 每次创建新对象会自动调用
-
---------------使用__init__----------------- class MyCl(): def __init__(self, name, age): self.name =name self.age = age myCi = MyCl("Mona",28) print(myCi.name) # Mona print(myCi.age) # 28 ----------------未使用__init__---------- class MyCl(): def Message(self, name, age): self.name =name self.age = age myCi = MyCl() myCi.Message("Mona",28) print(myCi.name) print(myCi.age)
- __new__()静态方法
- 作用:作用在__init__方法之前
- 调用时机: 类创建对象时即实例化且在调用__init__之前
- 如果重写返回类的实例的引用作为__init__方法的self,如果无返回,则不会调用__init__方法;未重写则调用父类的__new__方法
-
def __new__(cls, *args, **kwargs) : #cls是指的当前实例的类 a=super().__new__(cls) return a
- __str__()
- 作用:返回对象的描述信息
- 调用时机:打印对象自动调用
-
------------------使用__str__函数--------------------- class MyCl(): def __init__(self, name, age): self.name =name self.age = age def __str__(self): return f"{self.name}的年龄是{self.age}" myCi = MyCl("Mona",28) print(myCi) # Mona的年龄是28 ------------------未使用__str__函数-------------- class MyCl(): def __init__(self, name, age): self.name =name self.age = age myCi = MyCl("Mona",28) print(myCi) # <__main__.MyCl object at 0x10d15bcd0>