前言python是面向对象的,对象有属性和方法,可以通过__dict__查看对象的属性 dict查看对象属性首先弄清楚2个概念,类(A)和类的实例对象(A()), 如下代码
class A(object): A类有属性和方法,抽象的来讲,方法也可以看成类的属性(方法属性) print(A.__dict__) # A类属性 运行结果 {'__module__': '__main__', 'count': 0, '__init__': <function A.__init__ at 0x000001F84781AAE8>, 'start': <function A.start at 0x000001F84781AB70>, 'stop': <staticmethod object at 0x000001F84783A2B0>, 'open': <classmethod object at 0x000001F84783A2E8>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None} 从运行结果可以看出,A的类属性有count,还有定义的一些方法(__init__构造方法,还有实例方法,静态方法,类方法) 如果我们直接A.name 和 A.age就会报错 print(A.name) 报错 Traceback (most recent call last): 因为name和age属性在__init__构造方法里面,只有当A类实例化的时候,才会执行__init__构造方法,这时候才会有name和age属性了 继承时dict属性当B类继承A类的时候,A类和B类都有自己的类属性 count,也各自有自己的__init__构造方法 class A(object): 运行结果 {'__module__': '__main__', 'count': 0, '__init__': <function A.__init__ at 0x000001FD03F8AAE8>, 'start': <function A.start at 0x000001FD03F8AB70>, 'stop': <staticmethod object at 0x000001FD03FAA470>, 'open': <classmethod object at 0x000001FD03FAA4A8>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None} 从运行结果可以看出
|
|