我对python不熟悉(对编程并不陌生),我一直在胡思乱想“self”。我取得了很大的进步,但后来我发现了一些有趣的东西,与我的小程序乱搞。我创建了一个名为Person的对象。这是我整个程序的代码。你知道吗
class Person():
name = "temp"
def __init__(self, aname):
global name
print("A Person is created!")
name=aname
self.test()
def test(self):
print(name)
print(self.name)
p1 = Person("Tim")
如您所见,我创建了一个名为'name'的变量。在构造函数中,我传入一个名为'aname'的变量,并将其赋给变量'name'。在构造函数的末尾,我调用了一个名为test的方法,该方法输出两个内容。第一个实际打印的是我在构造函数中设置name的内容(在本例中是“Tim”,正如您在最后一行代码中看到的),但是第二个打印的是“temp”,这是我初始化name的内容。这些值不应该相同吗?在我的场景中使用和不使用self有什么区别?你知道吗
仅供参考,以下是打印出来的内容
A Person is created!
Tim
temp
在
init
中分配给aname
的name
变量实际上与最初声明为tmp
的变量不同,它是一个全新的全局变量。例如,可以在代码末尾添加print name
:您的输出将是:
说明这一点的另一种方法是完全更改变量的名称:
还将打印:
要完成我假设您希望完成的任务,即为每个人分配
name
属性,请使用self.name
设置该属性。你知道吗(请注意,尝试在
test()
中print(name)
将失败,因为没有具有该名称的范围内属性。)相关问题 更多 >
编程相关推荐