gpt4 book ai didi

Python仅从类中删除 "new"属性?

转载 作者:行者123 更新时间:2023-12-01 05:05:00 29 4
gpt4 key购买 nike

我正在学习 Python 教程并遇到以下代码:

x.counter = 1
while x.counter < 10:
x.counter = x.counter * 2
print x.counter
del x.counter

显然 del 可以从类实例中删除属性。我做了一些实验,发现只有新添加的不在类定义内的属性才能被删除。

class obj:
a = 1
x = obj()
print x.a #this outputs 1
del x.a

并引发以下异常。

AttributeError: obj instance has no attribute 'a'

谁能帮我解释一下为什么?

最佳答案

您没有创建实例变量。所以a不属于x的命名空间,而是属于obj的命名空间。您可以删除它,但必须引用 obj 的命名空间:

del obj.a

要创建实例变量,您必须定义一个构造函数:

class obj:
def __init__(self):
self.a = 1
x = obj()
del x.a

关于Python仅从类中删除 "new"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25217592/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com