「在Python每一件事情都是一個對象」對象已在蟒蛇
所以,應該所有對象必須有屬性和方法既沒有屬性也沒有方法?
我讀下面statemts在教程網站,你可以給在具有既沒有屬性也沒有方法蟒蛇例如預先定義的對象?
有些對象既沒有屬性也沒有方法
「在Python每一件事情都是一個對象」對象已在蟒蛇
所以,應該所有對象必須有屬性和方法既沒有屬性也沒有方法?
我讀下面statemts在教程網站,你可以給在具有既沒有屬性也沒有方法蟒蛇例如預先定義的對象?
有些對象既沒有屬性也沒有方法
一切都在Python確實是一種對象,這是事實。即使是班級本身也被認爲是對象,他們確實是內建類type
的產物,這也不足爲奇。但在大多數情況下,對象幾乎肯定會繼承屬性,包括方法或數據。
因此,所有的對象都應該有屬性和方法嗎?
不一定所有對象都有自己的屬性。例如,一個對象可以從它的類和它的類的超類繼承這個屬性,但是這個屬性或方法不一定存在於這個實例的名字空間字典中。事實上,情況的命名空間可以是空如下所示:
class Foo:
pass
a = A()
print(a.__dict__)
a
這裏沒有任何屬性,除了那些從它的類繼承的,所以如果您通過內置的屬性,檢查其命名空間__dict__
,你會發現命名空間是一個空的字典。但是你可能會想知道a.__dict__
是否屬於a
?區分級別屬性 - 從類或其超類繼承的屬性和實例屬性 - 屬於該實例且通常位於其名稱空間__dict__
中的屬性。
你可以給一個既沒有屬性也沒有方法的預定義對象的例子嗎?
如果你的意思是預定義的對象,一個內置對象,我無法想象這樣的場景。同樣,即使對象本身沒有屬性,如果在大多數情況下有超類,那麼就會有從它的類或類的超類繼承的屬性。也許我在這裏猜測,本教程要求您創建不爲其對象分配屬性的類,就像我上面包含的代碼一樣。
這已經回答你的問題好:Is everything an object in python like ruby?
有模仿,沒有屬性的一個Python對象hackish的方式。
class NoAttr(object):
def __getattribute__(self, attr):
raise AttributeError("no attribute: %s" % attr)
def __setattr__(self, attr, value):
raise AttributeError("can't set attribute: %s" % attr)
def __delattr__(self, attr):
raise AttributeError("no attribute: %s" % attr)
a = NoAttr()
這個實例a
,對於所有意圖和目的,在純Python,表現如同沒有屬性(你可以嘗試在它hasattr
)的對象。
在C擴展中可能有一種低級別的方法,通過在C中實現一種類型,從病理上阻止Python的對象實現工作。無論如何,這裏的保證金太小,不適合寫一個。
沒有屬性的預定義對象將會破壞預定義它的目的。
大概你的意思是http://www.diveintopython.net/getting_to_know_python/everything_is_an_object.html,所以你有沒有讀過第三章承諾的後續行動? – jonrsharpe
可能重複[是否所有的東西都是python中的對象,像ruby?](http://stackoverflow.com/questions/865911/is-everything-an-object-in-python-like-ruby) – direprobs