內實例變量自當讓我們說我有這樣「自我」沒有定義欲以
class A:
var1 = self.var0
def __init__(self, var0):
self.var0 = var0
代碼我怎麼可能會self.var0到VAR1沒有把var1的初始化函數裏面?如果你想有兩個變量與
class A:
def __init__(self, var0):
self.var1 = var0
:
內實例變量自當讓我們說我有這樣「自我」沒有定義欲以
class A:
var1 = self.var0
def __init__(self, var0):
self.var0 = var0
代碼我怎麼可能會self.var0到VAR1沒有把var1的初始化函數裏面?如果你想有兩個變量與
class A:
def __init__(self, var0):
self.var1 = var0
:
你,我能想到的兩個選項:
1)包括在初始化函數,如果你想與A.var1 = var0創建一個A對象:
class A:
def __init__(self, var0):
self.var0 = var0
self.var1 = self.var0
2 )如果你真的不想初始化函數裏面VAR1,您可以創建一個函數,是的,像這樣一類部分:
class A:
def __init__(self, var0):
self.var0 = var0
def setVar1(var1):
self.var1 = var1
然後創建一個對象並設置其V1值等於v0,你會的做這樣的事情:
v0 = some_value
a = A(v0)
a.setVar1(v0)
編輯:
3)在評論中所建議的 「Blckknght」 在其他的答案中的一個:你可以連續使用賦值語句:
self.var0 = self.var1 = var0
試試這個:
class A:
def __init__(self, var0):
self.var1 = self.var0 = var0
不過,我看不出有什麼意義這一點,寧願簡單地立即初始化它像這樣相同的價值,堅持第一種方法。
你也可以鏈分配:'self.var0 = self.var1 = var0' – Blckknght
是的,當然。好主意,我會補充說。 –
在您的代碼中var1 = self.var0
處於類級別,而不是實例級別,因此self
在此處沒有意義。要看到它,請試試這個:
class C(object):
field1 = 1
def __init__(self):
self.field2 = 2
print(C.field1)
print(C.field2) # should raise an exception
instance = C()
print(instance.field1) # not found in instance but found at upper level (class-level)
print(instance.field2)
你期望'self'在那個點上?你爲什麼不想把它放在'__init__'中? – mgilson