我在Python中学习了一些OOP基础知识,但我发现它不允许使用多个构造函数。但是,我尝试了以下代码:
class Whatever:
def __init__(self,x=0,y=0):
self.x=x
self.y=y
def Whatever(self,x,y):
self.x=x
self.y=y
当我执行它时,它就像多个构造函数一样工作:
c=Whatever()
print c.x,c.y
0,0
d=Whatever(1,2)
print d.x,d.y
1,2
可以在Python中构建多个构造函数吗?
答案 0 :(得分:2)
你的第二个“构造函数”实际上从未被调用过。当您使用和不使用参数调用__init__
时,将调用Whatever
函数;致电Whatever(1,2)
只需使用__init__
和x=1
来调用y=2
。
如果你 调用它,你添加的Whatever
函数将不会按照你想要的方式运行,因为它是一个实例方法;你需要创建一个Whatever
实例才能调用它。您需要classmethod
代替:
class Whatever(object):
def __init__(self,x=0,y=0):
self.x=x
self.y=y
@classmethod
def Whatever(cls,x,y):
return cls(x,y)
d = Whatever.Whatever(1, 2)
但这实际上是不必要的,因为__init__
涵盖了您想要初始化类的两种方式。