-
魔术方法
''' 魔法方法: __new__ __new__: 根据参数cls传递过来的类,来完成对象空间的创建 ''' class Dog: def __new__(cls, *args, **kwargs): new_obj = object.__new__(cls) print(new_obj) return new_obj def __init__(self, name): print('**************',self) self.name = name print('------------>init') def eat(self): print('{}喜欢吃肉骨头'.format(self.name)) print('Dog=============>', id(Dog)) dog1 = Dog('大黄') print(dog1)
''' 魔术方法: 在某种场景下会自动调用的方法称作魔术方法 类中系统的魔术方法: __new__ 创建对象的 * __init__ 给对象初始化赋值的 * __str__: 当打印对象的时候,默认出现的是<__main__.Cat object at 0x0000000002262710> 对于开发者来书不直观不方便查看一些信息,因此需要定义__str__方法,因为打印对象的时候会默认调用此方法 此方法的返回值必须是字符串。 __repr__: 类似__str__方法,只不过在没有定义__str__方法的时候,就会调用__repr__方法 __del__: delete的缩写。 对象空间回收的时候会默认调用此方法 了解__del__的作用,无需自己定义__del__魔术方法 __call__: 调用时机,一个对象名A,A()则默认会调用__call__方法。 了解 __dir__: 得到当前对象的所有属性和方法 ''' class Cat: def __init__(self, nickname, age): self.nickname = nickname self.age = age def __str__(self): return self.nickname # def __repr__(self): # return self.nickname def __del__(self): print('-----> del', self.nickname) def __call__(self, *args, **kwargs): print('哈哈哈我被调用了') cat1 = Cat('花花', 1) print(cat1) # return self.nickname cat1() print(cat1.__dir__()) # print(cat1.__repr__()) # print(cat1.__str__()) cat2 = Cat('胖墩', 2) print(cat2) cat2() del cat1 cat3 = cat2 print(cat3) print('--------over---------')
面向对象4(魔术方法)
最新推荐文章于 2022-05-08 10:36:33 发布