鱼C论坛

 找回密码
 立即注册
查看: 991|回复: 3

[已解决]关于__new__报错问题

[复制链接]
发表于 2018-6-20 22:50:06 | 显示全部楼层 |阅读模式

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

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

x
  1. class B:
  2.         def __new__(cls,x):
  3.                 print('创建类')
  4.                 return super(B,cls).__new__(cls,x)
  5.         def __init__(self,x):
  6.                 self.x=x
复制代码

会进行报错,不知道原因,求解释!
Traceback (most recent call last):
  File "<pyshell#85>", line 1, in <module>
    a=A(12)
  File "<pyshell#84>", line 7, in __new__
    return super().__new__(cls,x)
TypeError: object() takes no parameters
最佳答案
2018-6-21 18:52:13
fangfangfengfei 发表于 2018-6-21 00:06
简答,因为__new__方法的参数x没有传递。
这句话该怎么理解?

因为__new__函数在__init__函数之前调用,而你并没有(事实上你根本没有机会)传递给__new__函数任何参数(除了self默认传递)。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 23:15:06 | 显示全部楼层
简答,因为__new__方法的参数x没有传递。
要知道,__new__方法在对象创建时调用,在__init__方法执行之前执行。。
Screen Shot 2018-06-20 at 23.14.37.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-21 00:06:03 | 显示全部楼层
ABC23 发表于 2018-6-20 23:15
简答,因为__new__方法的参数x没有传递。
要知道,__new__方法在对象创建时调用,在__init__方法执行之前 ...

简答,因为__new__方法的参数x没有传递。
这句话该怎么理解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-21 18:52:13 | 显示全部楼层    本楼为最佳答案   
fangfangfengfei 发表于 2018-6-21 00:06
简答,因为__new__方法的参数x没有传递。
这句话该怎么理解?

因为__new__函数在__init__函数之前调用,而你并没有(事实上你根本没有机会)传递给__new__函数任何参数(除了self默认传递)。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 20:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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