python类问题
class Coordinate:x = 10
y = -5
z = 0
a=Coordinate()
delattr(a,'x')
class b():
def __init__(self,item):
self.x=item
a=b(4)
delattr(a,'x')
为什么上面的运行错误而下面运行正确 第一种是类属性,删除得这样:delattr(Coordinate,'x') 因为第二种用了那个init魔法方法,每当你生成一个对象的时候会自动运行init下的代码,所以可以直接删除实列的属性
而第一种在你生成一个实例的时候并不会运行下面的代码,只有你去运行a.x才会返回x的值,但是并没有给a这个属性,只有一个叫a.x的值 梦回连营 发表于 2020-12-6 19:35
因为第二种用了那个init魔法方法,每当你生成一个对象的时候会自动运行init下的代码,所以可以直接删除实列 ...
说白了上面的变量不是类的属性,是吗。 kno 发表于 2020-12-6 20:29
说白了上面的变量不是类的属性,是吗。
是类的属性,但并不是对象的属性
也就是Coordinate有这个属性,你可以delattr(Coordinate,'x')删除这个属性
但不是a的属性,所以没办法delattr(a,'x')删除
页:
[1]