1. 类属性:
公有的: _attr
私有的:__attr : 类里面在定义这个属性的时候,python给它改了名字
class MyClass:
_attr = 100 # 公有属性,类外面可以访问
__attr = 200
obj = MyClass()
# print(obj._attr)
# print(obj.__attr) # 直接访问私有属性会报错:'MyClass' object has no attribute '__attr'
# tips: 通过__dict__方法可以查看类属性的 key,value值,以字典返回
2. dict 方法:
通过__dict__方法可以获取对象或类的所有属性,以字典返回
类.__dict__: 获取所有的类属性和方法
对象.__dict__: 获取所有的实例属性
res = MyClass.__dict__
print(res)
{‘module’: ‘main’,
‘_attr’: 100, # 公有属性的key仍然是定义的,未被修改
‘_MyClass__attr’: 200, # 可以看出私有属性的key被改为了:_MyClass__attr,所以才会报错’MyClass’ object has no attribute '__attr’
‘dict’: <attribute ‘dict’ of ‘MyClass’ objects>,
‘weakref’: <attribute ‘weakref’ of ‘MyClass’ objects>,
‘doc’: None}
所以如果调用obj._MyClass__attr 就可以获取 __attr的值了
print(obj._MyClass__attr)