我有这些课程:
class Human:
def __init__(self, x_position, y_position):
self.y_position = y_position
self.x_position = x_position
class Feared(Human):
def __init__(self, x_position=0, y_position=0, fear_percent=0):
self.y_position = y_position
self.x_position = x_position
self.fear_percent=fear_percent
问候,所以我有这些类,我想制作几个Human对象,之后我想将它们转换为Feared对象。你一般如何解决这个问题?在C ++中,我可以重新设置=运算符,我可以在Python中执行此操作吗?或者我可以创建一个具有指定参数类型的构造函数/函数。但是这里的变量是在函数的参数中添加它们时指定的。那么我可以创建两个 init 函数,一个是arg类型的人类,另一个是我已创建的函数吗?
那么你如何解决python不能创建多个构造函数的事实
答案 0 :(得分:1)
在C ++中,你不会将Human对象转换为Feared对象,这通常在python中保存。你可以做的是从一个Human参数创建一个新的Feared对象。
类中只能有一个__init__()
方法。在可能的解决方案中,可以在Feared对象中添加类方法:
class Feared(Human):
....
@classmethod
def from_human(cls, hum):
return cls(hum.x_position, hum.y_position, 0)
h = Human(4, 4)
feared = Feared.from_human(h)
答案 1 :(得分:0)
不,你不能在python中拥有多个构造函数。 您可以尝试在当前构造函数中包含Human类型的引用,并将其设置为等于 None 。这样,如果您不传递Human对象,默认情况下它将为None。