簡體   English   中英

在Python中使用self內部實例方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM