Python3 --- 魔术方法
1.1、__init__(self):用于初始化
- class Cat:
- def __init__(self,name,age):
- self.name = name
- self.age = age
- def __str__(self):
- return self.name + str(self.age) + "岁"
- cat1 = Cat("汤姆猫", 1)
- cat2 = Cat("加菲猫", 2)
- print(cat1)
- print(cat2)
1.2、__str__(self):相当于Java的重写的toString方法
- class Cat:
- def __init__(self,name,age):
- self.name = name
- self.age = age
- def __str__(self):
- return self.name + str(self.age) + "岁"
- cat1 = Cat("汤姆猫", 1)
- cat2 = Cat("加菲猫", 2)
- print(cat1)
- print(cat2)
1.3、__del__(self):相当于Java中对象销毁时的回调函数
- class Cat:
- def __init__(self,name,age):
- self.name = name
- self.age = age
- def __del__(self):
- print("对象已销毁")
- cat1 = Cat("汤姆猫", 1)
- cat3 = cat1
- del cat1
- print("="*20)
- cat2 = Cat("加菲猫", 2)
- print("="*20)
(2)当程序执行到最后一步完成后,程序会自行销毁已经不再使用的对象,此时会调用__del__(self)
1.4、__mro__():继承下方法搜索调用的优先级
- class Base(object):
- def test(self):
- print()
- class A(Base):
- def test(self):
- print("------------A")
- class B(Base):
- def test(self):
- print("------------B")
- class C(A,B):
- pass
- #def test(self):
- # print("------------C")
- c = C()
- c.test()
- print(C.__mro__)
(2)__mro__是通过C3算法来确定的方法调用的优先级
1.5、__new__():object的__new__(cls)是创建对象的方法,这里的__new__(cls)只是重写了object的方法,所以对象没有创建,如果需要创建,则需要调用object.__new__(cls)方法(如下注释部分)
- class Test(object):
- def __init__(self):
- print("----init方法----")
- def __del__(self):
- print("----del方法----")
- def __str__(self):
- print("----str方法----")
- def __new__(cls):
- print("----new方法----")
- print(id(cls))
- #return object.__new__(cls)
- print(id(Test))
- test = Test()
版权声明:转载。 https://blog.csdn.net/Ka_Ka314/article/details/80402143

浙公网安备 33010602011771号