[英]“Undeclared variable” declaration in python
以下代碼是一個示例:
class A(object):
def f(self):
pass
A.f.b = 42
如何分配此變量? 如果聲明Afa,Afb和Afc變量,是否要創建3個A的不同對象? 有人可以解釋內存中發生了什么(因為這似乎不是用C輕松編碼的東西)?
Ab = 42
將類變量添加到A
,從而使它對於A
每個實例都立即可見(但在內存中只有1個條目)
您可以隨時在Python中向類和實例添加屬性。 最干凈的方法是在聲明時間進行操作,否則可能會產生誤導。
class A:
b = 12
但是對於類或實例的快速“擴展”,您可以選擇動態添加它們。
例如:
class A(object):
pass
a = A()
print('b' in dir(a)) # False
A.b = 42
print('b' in dir(a)) # True even if instanciated before creation of `b`
以下內容僅適用於Python 3:
class A(object):
def f(self):
pass
A.f.a = 41
A.f.b = 42
A.f.c = 43
Af
是function
類型的對象,您始終能夠向function
對象添加新屬性。 沒有創建A
實例; 這三個屬性是從函數f
本身引用的。
但是,如果有兩個實例a1 = A()
和a2 = A()
,則不會定義a1.fb
和a2.fb
,因為a1.f
不是對Af
的引用; 它是對type method
對象的引用。 這是由於Python的描述符協議用於實現實例方法的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.