解决python不能创建多个构造函数的事实

时间:2016-12-13 21:05:11

标签: python oop

我有这些课程:

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不能创建多个构造函数的事实

2 个答案:

答案 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。

相关问题