有沒有方法使用實例的變量和函數定義類變量?由於如何使用Python中實例的函數和變量定義類變量
簡化代碼如下所示:
def ClassA():
X = self.func(self.a)
def __init__(self, avalue):
self.a = avalue
def func(self):
return self.a + 5
NameError:名字 '自我' 是沒有定義
有沒有方法使用實例的變量和函數定義類變量?由於如何使用Python中實例的函數和變量定義類變量
簡化代碼如下所示:
def ClassA():
X = self.func(self.a)
def __init__(self, avalue):
self.a = avalue
def func(self):
return self.a + 5
NameError:名字 '自我' 是沒有定義
首先,您需要定義使用class
,不def
一類。
self
只需要在類的函數定義中使用,因爲它們改變了範圍。他們之外你不需要它: x = func(a)
。
但是,您的代碼無法正常工作,因爲該實例尚不存在。
我猜你試圖做的是:
class ClassA():
def __init__(self,avalue):
self.a = avalue
self.X = self.func
def func(self):
return self.a + 5
b = ClassA(43)
b.X()
輸出
48
class A():
def __init__(self):
self.y = 0
def m(self):
A.x = 1
b = A()
#print(b.x) doesn't work here since we haven't made it yet.
b.m()
print(b.x) #1
c = A()
print(c.x) #1
A.x = 2
print(c.x) #2
print(b.x) #2
print(vars(A)) #{'__dict__': <attribute '__dict__' of 'A' objects>, '__module__': 'builtins', 'x': 2, '__init__': <function A.__init__ at 0x7f15f800d730>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None, 'm': <function A.m at 0x7f15f800d7b8>}
你在尋找這樣的事情?
你不能這樣做,因爲類必須存在於類實例之前。 –
您可以從實例設置類變量,是的。即使有實例,您也無法訪問任何實例變量。也許你誤解了什麼是一個實例......? – deceze