鱼C论坛

 找回密码
 立即注册
查看: 3605|回复: 5

[已解决]__del__魔法方法的对象重生

[复制链接]
发表于 2022-12-1 21:35:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大神:
     我在看小甲鱼的视频<原来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时却报错,未能像视频里那样反显出'小甲鱼'.
最佳答案
2022-12-2 21:57:48
本帖最后由 lxping 于 2022-12-2 22:02 编辑

你的 “global x” 中的 x 是不是用的大写了?改成小写的x就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-1 22:49:23 | 显示全部楼层
本帖最后由 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'?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-2 20:03:47 | 显示全部楼层
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".
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 20:40:38 | 显示全部楼层
你运行的代码发出来看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-2 21:34:45 | 显示全部楼层
lxping 发表于 2022-12-2 20:40
你运行的代码发出来看下

Pic.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 21:57:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 lxping 于 2022-12-2 22:02 编辑

你的 “global x” 中的 x 是不是用的大写了?改成小写的x就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 12:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表