用户:
11111111111111112查看:52 回复:4 评论:10 创建时间:2023-05-14T19:20:59
class person:
__slots__ = ("name")
def __init__(self):
self.name=12
shili = person()
print(shili.name)
person.name=1090
print(shili.name)
print(person.__dict__) 为什么修改类属性会影响实例属性?(缩进被吞)
SCS_user_LoeheodVOQ因为你定义了__slots__,所以类自动添加了类属性name,修改name就会影响到实例属性,没有__slots__就不会了
点赞0
评论
能否详细说明一下为啥修改name就会影响到实例属性?
我也不是非常清楚()好像是修改类属性就是会影响示例属性
SCS_user_LoeheodVOQclass A:
x = 1
a = A()
a.x // 1
A.x // 1
A.x = 2
A.x // 2
a.x // 2
点赞0
评论
注释写错了,你把//看成#就行了
主要是这是在我没有设置实例属性x的情况下才会访问类属性,但是上述代码def __init__(self): self.name=12我已经设置了实例属性,但是类属性任然影响它
slots初始化的类属性比较特殊,得到的值是member 'xxx' of 'xxx' objects
𝙲ℴ𝗌𝔦𝒹ₑ𝑟原实例类继承原型类
当实例类属性未设置值
则调用原型类的属性
所以修改原型类会影响到实例(补充)
点赞0
评论
但我的初始化函数self.name=12已经设置了实例属性,为什么类属性还是影响?求解答
第一,不是在实例创建后修改实例,链接使用原型
第二,原型继承
(大概吧()