注意:我使用jupyter notebook和python 3.6
我创建了一个班级myclass
并添加了两个属性var1
,var2
:
class myclass():
def __init__(self):
self.var1 = 1
self.var2 = 2
cls = myclass()
print(dir(cls))
输出:
['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'var1',
'var2']
我测试过了
cls.var1 == 1
cls.var2 == 2
都是真的。
尝试使用以下代码获取'var1'
和'var2'
cls
对象的值时:
for attr in dir(cls):
if not attr.startswith('__'):
print(attr)
print(cls[attr])
输出:
var1
[ignore traceback details...]
AttributeError: 'myclass' object has no attribute 'attr'
但根据第一行输出,attr
已经var1
,为什么在评估cls[attr]
时会引发AttributeError?