python-3.x 如何删除房产?

wi3ka0sx  于 2022-12-01  发布在  Python
关注(0)|答案(4)|浏览(148)

第一个
我知道del C.x可以工作,但是这会删除 class 的属性;可以删除类 * 示例 * 的属性吗?

egdjgwm8

egdjgwm81#

参见this answer; TL;DR,它不是关于属性,而是 * 绑定属性 *,并且x绑定到 * 类 *,而不是 * 示例 *,所以当一个示例一开始就没有它时,它不能从示例中删除。演示:
第一个

pwuypxnk

pwuypxnk2#

我知道del C.x可以工作,但这会删除类的属性;可以删除类示例的属性吗?
没有这样的东西,属性是在类上定义的,在你提供的例子中,示例上没有任何东西,它就像一个方法,方法是类的一个属性,Python在示例的上下文中执行。

v7pvogib

v7pvogib3#

我得到了下面相同的错误:
属性错误:无法删除属性
当试图删除**示例变量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方法**:

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
7fhtutme

7fhtutme4#

您可以执行类似以下操作从示例中删除attr。
https://stackoverflow.com/a/36931502/12789671
第一个

相关问题