Python - 魔法方法

object.__dict__ 提供了一个字典。可以打印任何实例的每个属性信息。

>>> class Person(object):
...     def __init__(self,name,age,job):
...             self.name = name
...             self.age = age
...             self.job = job
...
>>> p = Person('xiaoming',18,'Java')
>>> p.__dict__
{'name': 'xiaoming', 'age': 18, 'job': 'Java'}

__class__: 返回对象的类型信息

__bases__: 返回类对象的所有超类,是一个元组类型

>>> class A:
...     pass
...
>>> class B:
...     pass
...
>>> class C(A,B):
...     pass
...
>>> C.__bases__
(<class '__main__.A'>, <class '__main__.B'>)

__new__:

  • 使用 类名() 创建对象时,Python的解释器会首先调用__new__ 方法为对象分配内存空间
  • new 是一个由object 基类提供的内置静态方法,主要作用由两个
    1.为对象分配内存空间 2. 返回对象的引用
  • Py解释器获得对象的引用后,将引用作为第一个参数,传递给__init__方法
  • 重写__new__ 方法一定要 return super().new(cls),否则解释器得不到分配了空间的引用,就不会调用对象的初始化方法
  • new 是一个静态方法,在调用时要主动传递cls参数
posted @ 2022-01-07 23:18  chuangzhou  阅读(25)  评论(0编辑  收藏  举报