【发布时间】:2016-01-04 21:44:33
【问题描述】:
当某些类属性没有声明时,这段代码如何工作?
A 类声明时只有一个属性 aa 但是可以将其他属性“分配”给对象 A,这些属性存储在列表 L 中,以后可以引用。
class A(object):
aa = ''
L = []
One = A()
L.append(One)
One.Type = 'One_Type'
One.Name = 'One'
One.Top = 200
One.Left = 50
Two = A()
L.append(Two)
Two.Type = 'Two_Type'
Two.Name = 'Two'
Two.Text = 'Hello'
One.XXX = 'XXX'
for i in range(len(L)):
for key, value in L[i].__dict__.items():
print(L[i].Name, key, value)#, L[i].Type)
print
print
结果如下:
('One', 'Top', 200)
('One', 'XXX', 'XXX')
('One', 'Type', 'One_Type')
('One', 'Name', 'One')
('One', 'Left', 50)
('Two', 'Text', 'Hello')
('Two', 'Type', 'Two_Type')
('Two', 'Name', 'Two')
【问题讨论】:
-
Python 是动态的,您可以在运行时将您喜欢的任何属性分配给您的自定义类(除非您正在使用例如
__slots__,具有子类namedtuple等)。