__del__魔法方法的对象重生
各位大神:我在看小甲鱼的视频<原来Python懂魔法-类和对象(VIII)>其中讲到__del__魔法方法的对象重生,其中视频中的例子如下:
class D:
def __init__(self, name):
self.name = name
def __del__(self):
global x
x = self
当执行上述语句时,首先执行d = D('小甲鱼'),后续在访问全局变量x时正常,但在访问x.name时系统却报错,报错内容为AttributeError: 'D' object has no attribute 'name',但视频中x.name却显示'小甲鱼'.
我检查了一遍代码,都没有问题,为何我执行x.name时却报错,未能像视频里那样反显出'小甲鱼'. 本帖最后由 lxping 于 2022-12-1 23:13 编辑
运行了一遍没有问题,请把你操作的语句都贴出来看下。
class D:
def __init__(self, name):
self.name = name
def __del__(self):
global x
x = self
d = D("小甲鱼")
d
<__main__.D object at 0x000001DEF0A65C60>
d.name
'小甲鱼'
del d
x
<__main__.D object at 0x000001DEF0A65C60>
x.name
'小甲鱼'
d
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
d
NameError: name 'd' is not defined. Did you mean: 'D'? lxping 发表于 2022-12-1 22:49
运行了一遍没有问题,请把你操作的语句都贴出来看下。
class D:
def __init__(self, name):
self.name = name
def __del__(self):
global x
x = self
我又试了一下,访问x的时候却显示错误,错误信息为"NameError: name 'x' is not defined". 你运行的代码发出来看下 lxping 发表于 2022-12-2 20:40
你运行的代码发出来看下
本帖最后由 lxping 于 2022-12-2 22:02 编辑
你的 “global x” 中的 x 是不是用的大写了?改成小写的x就可以了
页:
[1]