请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

__new__问题

>>> class A(object):
	def __init__(self, *args, **kwargs):
		print('init')
		print(self)
		print(args)
		print(kwargs)
	def __new__(cls,*args, **kwargs):
		print('new')
		print(cls)
		print(args)
		print(kwargs)
		return object.__new__(cls,*args, **kwargs)

	
>>> a = A('123',b='asdf')
new
<class '__main__.A'>
('123',)
{'b': 'asdf'}
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    a = A('123',b='asdf')
  File "<pyshell#26>", line 12, in __new__
    return object.__new__(cls,*args, **kwargs)
TypeError: object() takes no parameters

请问老师这里运行到return为什么会报错啊,我该怎么改呢?

正在回答 回答被采纳积分+3

1回答

提问者 小龙骑士 2017-06-26 17:09:21

经过一番搜索查询,终于搞清问题原因,因为我继承的是object类,所以在实例化行为的时候不能在 __new__方法返回的时候带入参数。将代码改成如下的:

class A(object):
    def __init__(self, *args, **kwargs):
        print('init')
        print(self)
        print(args)
        print(kwargs)
    def __new__(cls,*args, **kwargs):
        print('new')
        print(cls)
        print(args)
        print(kwargs)
        return object.__new__(cls)

a = A('123', b = 'abc')

python3的环境!遇到相同问题的同学,可以参照试一下

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信