[英]Usage of self inside instance methods in Python
我有這樣的課
class Test:
def __init__(self, var):
self.var = var
def test(self):
x = self.var + 2
return x
然后我上這樣的課
class Test:
def __init__(self, var):
self.var = var
def test(self):
self.x = self.var + 2
return self.x
我知道我可以使用self
來分隔此類的各種實例中的屬性值。 我的問題是,如果我在一個方法中創建許多實用程序變量(如x
),是否應該始終使用self
創建它們?
誰能解釋上述兩個類的行為方式不同(如果有)?
讓我們看看兩個類之間的區別:
class Test:
def __init__(self, var):
self.var = var
def test(self):
x = self.var + 2
return x
讓我們創建一個Test對象:
t = Test(1)
看看我們能做什么
t.var # 1
t.x # Raises AttributeError : no such attribute in the class
t.test() #3
t.x # Still erroring
第二節課
class Test:
def __init__(self, var):
self.var = var
def test(self):
self.x = self.var + 2
return self.x
讓我們創建一個Test對象:
t = Test(1)
看看我們能做什么
t.var # 1
t.x # Raises AttributeError : no such attribute in the class
t.test() #3
t.x # 3
所以呢 ? 好了,我們可以看到任何用self.VARNAME
定義的變量self.VARNAME
保留在實例中,而簡單的局部變量則沒有self.
,沒有。
但是,如果x需要通過tx進行訪問,我可能會選擇一個屬性,就像這樣
class Test:
def __init__(self, var):
self.var = var
@property
def x(self):
x = self.var + 2
return x
t = Test()
t.x # 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.