在python类函数中,将'self'附加到一个新定义的变量时,是否有优势?

不知道在类函数中定义变量时,使用’self’是否有优势。

举个例子。

class Pay():     
    def __init__(self, cost):    
        self.deposit = get_from_web_or_somewhere_else    
        if deposit > cost:    
            self.pay()   

    def pay(self):   
        ...   

在这个例子中,一个新的变量 存款 被定义为一个自变量。

目前我理解的是,在一个类中新定义的变量不能从外部访问,即使有同样命名的全局变量,也会先读取局部变量。

但是我偶然看到一段代码,使用了这样的定义,这让我很好奇。

这真的是一件不必要的事情吗,还是说它有什么优势和区别?

解决方案:

如果你使用self,它将是对象内部的一个变量,你可以访问它。也可以从外部访问。

class Pay_self():

    def __init__(self, cost):
        self.deposit = cost

ps = Pay_self(10)
print(ps.deposit)
ps.deposit = 20
print(ps.deposit)

结果

10
20

如果你不使用self,它是init函数中的一个临时变量。

class Pay_not_self():

    def __init__(self, cost):
        deposit = cost


pns = Pay_not_self(10)
try:
    print(pns.deposit)
except Exception as e:
    print(str(e))

结果

'Pay_not_self' object has no attribute 'deposit'

但是,如果你给不存在的变量赋值,它将被创建。

class Pay_not_self():

    def __init__(self, cost):
        deposit = cost


pns = Pay_not_self(10)
try:
    print(pns.deposit)
except Exception as e:
    print(str(e))

pns.deposit = 20
print(pns.deposit)

结果是

'Pay_not_self' object has no attribute 'deposit'
20

所以我想最好的做法是使用self,如果它不是一个临时变量。

给TA打赏
共{{data.count}}人
人已打赏
未分类

vuex状态下应该初始化哪种类型的数据,什么时候初始化?

2022-9-8 17:58:16

未分类

如何将HTML元素分配给JavaScript全局变量?

2022-9-8 17:58:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索