python 类中,属性是否加self的区别
如下图所示,小甲鱼在tkinter 课上讲的例子,为什么 frame 没有加self 而hi_there 加了self? 加self的都是类中的成员变量,不加的话就是init函数里面的临时变量举个例子吧
class test:
def __init__(self):
self.a = 1
b = 2
def ceshi(self):
print(self.a)
print(b)
test1 = test()
test1.ceshi()
这段代码中,a加了self,它是class的成员变量,而b只是init函数的局部变量,看运行结果
================= RESTART: C:\Users\86188\Desktop\HelloWorld.py ================
1
Traceback (most recent call last):
File "C:\Users\86188\Desktop\HelloWorld.py", line 10, in <module>
test1.ceshi()
File "C:\Users\86188\Desktop\HelloWorld.py", line 7, in ceshi
print(b)
NameError: name 'b' is not defined
能够输出a,但是b是找不到的 小甲鱼的铁粉 发表于 2021-2-7 10:27
加self的都是类中的成员变量,不加的话就是init函数里面的临时变量
举个例子吧
谢谢,你说的我明白了,可是为什么在我的那段代码中,frame要用局部变量而button要用成员变量呢? bud 发表于 2021-2-7 11:18
谢谢,你说的我明白了,可是为什么在我的那段代码中,frame要用局部变量而button要用成员变量呢?
这个例子中没有实际应用意义,可以都加,也可以不加 。
具体项目中, 需要看变量适用范围,不建议定义大量类全局变量,本着最小化原则定义变量作用域。 dingtian1989 发表于 2021-2-7 16:40
这个例子中没有实际应用意义,可以都加,也可以不加 。
具体项目中, 需要看变量适用范围,不建议定义大 ...
好的,谢谢!
页:
[1]