employees = []
for i in range(0,10):
emp = Employee(i)
emp.first_name = "%s-%s"%("first name", i)
emp.last_name = "%s-%s"%("last_name", i)
emp.desgination = "%s-%s"%("engineer", i)
employees.append(emp)
ids = [e.eid for e in employees]
繼反彈是我的類定義:Python變量不適合循環
class Employee:
_fields = {}
def __init__(self, eid):
self.eid = eid
def __getattr__(self, name):
return self._fields.get(name)
def __setattr__(self,name,value):
self._fields[name] = value
def __str__(self):
return str(self._fields)
def __unicode__(self):
return str(self._fields)
的問題是,當我打印ID,它包含了10次9 ...即
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
似乎相同的emp變量被覆蓋。我不確定發生了什麼問題。雖然我是Java編碼人員,但我認爲我也對Python有一個公平的想法。
對!日Thnx。有沒有一種方法可以解決__setattr__方法問題。重點是我想維護動態添加到實例的屬性的列表或字典。 – 2012-03-08 09:09:08
是的,確實如此。檢查以下URL(舊版本,但仍然適用):http://docs.python.org/release/2.5.2/ref/attribute-access.html。這意味着你必須使用self .__ dict __ ['_ fields']而不是self._fields。 – huelbois 2012-03-08 09:51:09