我有以下代碼:蟒蛇:與本地類名混淆
C1 = f()
C2 = f()
,它似乎很好地工作:C1是C2返回False
def f():
class XYZ:
# ...
cls = type('XXX', (XYZ,), {})
# ...
return cls
我現在用的是如下
,有兩個類的類屬性之間沒有衝突,等等
問題1
這是爲什麼? C1和C2如何顯示爲類
<'__main__.XXX'>
但還不是相同的類?
問題2
是有一些問題的事實,我有兩種不同類型的兩個相同的名字呢?
問題3
我希望能夠代替寫:
f('C1')
f('C2')
具有同樣的效果。可能嗎?
問題4
如果我想C1看起來像一個普通班,不主要 .XXX,是它確定地說:
C1.__name__ = '__main__.C1'
您提出的代碼是什麼我原本。問題是,除非我說C1 = f('C1'),否則clsname在全球級別是未知的。我能否修正它,因此只需調用f('C1')就可以在全球範圍內引用C1類? 重新命名:我同意你的觀點;我只是指_ _ name _ _屬性是相同的。 – max 2010-08-31 19:44:37
看來,根據delnan的回答「修復它」是一個壞主意。然後我想我會繼續使用C1 = f()方法,而不用擔心XXX裏面的內容是相同的。 – max 2010-08-31 19:52:22
@ max。查看我的更新。您仍然可以控制分配給該類的'__name__'屬性以進行調試! – aaronasterling 2010-08-31 20:07:14