|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Person():
"""Silly Person"""
def __new__(cls,name,age):
print('__new__ called.')
return super(Person,cls).__new__(cls,name,age)
def __init__(self, name, age):
print('__init__ called.')
self.name = name
self.age = age
def __str__(self):
return '<Person: %s(%s)>' % (self.name, self.age)
if __name__ == '__main__':
piglei = Person('piglei', 67)
print (piglei)
程序输出报错:
__new__ called.
Traceback (most recent call last):
File "E:\eclipse工作目录\TestPython\输入中文设置.py", line 25, in <module>
piglei = Person('piglei', 67)
File "E:\eclipse工作目录\TestPython\输入中文设置.py", line 17, in __new__
return super(Person,cls).__new__(cls,name,age)
TypeError: object() takes no parameters
本帖最后由 SixPy 于 2016-7-12 06:36 编辑
class Person( object): # 明确指定继承关系,object 是所有对象的根对象
"""Silly Person"""
def __new__(cls,name,age):
print('__new__ called.')
return super(Person,cls).__new__( cls)# 只传递对象自身
def __init__(self, name, age):
print('__init__ called.')
self.name = name
self.age = age
def __str__(self):
return '<Person: %s(%s)>' % (self.name, self.age)
if __name__ == '__main__':
piglei = Person('piglei', 67)
print (piglei)
|
|