第一个我知道del C.x可以工作,但是这会删除 class 的属性;可以删除类 * 示例 * 的属性吗?
del C.x
egdjgwm81#
参见this answer; TL;DR,它不是关于属性,而是 * 绑定属性 *,并且x绑定到 * 类 *,而不是 * 示例 *,所以当一个示例一开始就没有它时,它不能从示例中删除。演示:第一个
x
pwuypxnk2#
我知道del C.x可以工作,但这会删除类的属性;可以删除类示例的属性吗?没有这样的东西,属性是在类上定义的,在你提供的例子中,示例上没有任何东西,它就像一个方法,方法是类的一个属性,Python在示例的上下文中执行。
v7pvogib3#
我得到了下面相同的错误:属性错误:无法删除属性当试图删除**示例变量name**时,del如下所示:
name
del
class Person: def __init__(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, name): self._name = name obj = Person("John") print(hasattr(obj, "name")) del obj.name # Here print(hasattr(obj, "name"))
因此,我添加了如下所示的**@name.deleter方法**:
@name.deleter
class Person: def __init__(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, name): self._name = name @name.deleter # Here def name(self): del self._name obj = Person("John") print(hasattr(obj, "name")) del obj.name # Here print(hasattr(obj, "name"))
然后,我可以删除**示例变量name**和del,如下所示:
True False
7fhtutme4#
您可以执行类似以下操作从示例中删除attr。https://stackoverflow.com/a/36931502/12789671第一个
4条答案
按热度按时间egdjgwm81#
参见this answer; TL;DR,它不是关于属性,而是 * 绑定属性 *,并且
x
绑定到 * 类 *,而不是 * 示例 *,所以当一个示例一开始就没有它时,它不能从示例中删除。演示:第一个
pwuypxnk2#
我知道del C.x可以工作,但这会删除类的属性;可以删除类示例的属性吗?
没有这样的东西,属性是在类上定义的,在你提供的例子中,示例上没有任何东西,它就像一个方法,方法是类的一个属性,Python在示例的上下文中执行。
v7pvogib3#
我得到了下面相同的错误:
属性错误:无法删除属性
当试图删除**示例变量
name
**时,del
如下所示:因此,我添加了如下所示的**
@name.deleter
方法**:然后,我可以删除**示例变量
name
**和del
,如下所示:7fhtutme4#
您可以执行类似以下操作从示例中删除attr。
https://stackoverflow.com/a/36931502/12789671
第一个