python中类的使用
Person().name = '小王八' ???为什么这个地方没有改变类里面的属性class Person:
name = '小乌龟'
def printname(self):
print(self.name)
Person().name = '小王八' ???为什么这个地方没有改变类里面的属性
Person().printname()→→→→→→→→→ 小乌龟
a = Person()
a.name = '小王八'
a.printname() →→→→→→→→→ 小王八
因为
Person().name = '小王八' ???为什么这个地方没有改变类里面的属性
Person().printname()→→→→→→→→→ 小乌龟
实例化了两次,每次都是不同的实例。 hrpzcf 发表于 2022-4-16 14:25
因为
Person().name = '小王八' ???为什么这个地方没有改变类里面的属性
Person().printname()→ ...
理解的不是很明白 。。。。 我的理解应该这俩的区别就在于一个引进了个中间变量啊。。。 Victor0321 发表于 2022-4-16 14:31
理解的不是很明白 。。。。 我的理解应该这俩的区别就在于一个引进了个中间变量啊。。。
除非你将这段代码放在定义了类之后:
Person.name = "小王八"
因为你前面是加了括号赋值的,所以是给新增的实例对象中的这个变量赋值,
要给他们的类之间进行改变,应在它是类,或类对象时才能定义(小甲鱼后面会讲的)! 本帖最后由 hrpzcf 于 2022-4-16 14:51 编辑
Victor0321 发表于 2022-4-16 14:31
理解的不是很明白 。。。。 我的理解应该这俩的区别就在于一个引进了个中间变量啊。。。
Person().name = '小王八' ???为什么这个地方没有改变类里面的属性
------》Person()是一个新实例,Person().name = '小王八' 只是改变了这个实例的name,类属性Person.name并没有被改变。如果想要改变类属性,需要Person.name = '小王八' ,不能加括号。
Person().printname()→→→→→→→→→ 小乌龟
------》Person()又重新实例化了一个新实例,跟上面那个实例不是同一个了,这个实例self.name的值是类属性Person.name的副本,也就是"小乌龟",所以printname方法中print(self.name)还是"小乌龟"
页:
[1]