我有一個方法isValid類Foo。然後我有一個方法bar()接收一個Foo對象,其行爲取決於它是否有效。什麼是我可以添加屬性的最普通的python類型?
爲了測試這一點,我想某些對象傳遞給條,其的isValid方法返回始終爲false。由於其他原因,我無法在測試時創建Foo對象,所以我需要一個對象來僞造它。我首先想到的是創建最通用的對象,並將其添加到isValid屬性中,以將其用作Foo。但沒有相當的工作:
>>> foo = object()
>>> foo.isValid = lambda : False
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'isValid'
我發現對象沒有一個__dict__
,這樣你就可以賦予它不會增加。在這一點上,我使用的解決辦法是動態創建用於此目的的類型,然後創建一個類型的對象:
>>> tmptype = type('tmptype',(), {'isValid' : lambda self : False})
>>> x = tmptype()
>>> x.isValid()
False
但這似乎太長了一槍。必須有一些我可以用於此目的的易於使用的一般類型,但是哪一個?
嗯,這基本上是在更多的線路,並用新的風格類,而不是傳播同樣的事情。但是我的問題仍然存在:是不是有一些通用的可用類型來實現相同的目的?類似於__dict__的對象?我真的需要爲此創建一個類型嗎? – ricab 2010-10-14 14:39:49
@ricab:這是對我剛剛脫谷歌的想法的拒絕。您可能能夠找到其他人。 http://mail.python.org/pipermail/python-bugs-list/2007-January/036866.html – aaronasterling 2010-10-14 14:59:33
哦,好了,所以沒有這樣的類型。不過,我覺得我可能只是缺少...謝謝 – ricab 2010-10-14 15:06:00