2016-12-13 9 views
0

つ以上のコンストラクタが作ることができないという事実を中心に取り組んでそれらをFearedオブジェクトに変換したいどのようにしてこの問題を一般的に解決しますか? C++では、=演算子をrefedineできます。これをPythonで行うことはできますか?または、引数型を指定したコンストラクタ/関数を作成することもできます。しかし、ここでは変数は関数の引数に追加するときに指定されます。だから私は2つの関数を作成することができますか?1つはarg型の人間を持ち、もう1つはすでに作成していますか?Pythonは、私はこれらのクラスを持っている

それでは、どのようにいいえ、あなたはPythonで複数のコンストラクタを持つことはできませんPythonは複数のコンストラクタ

答えて

0

を作ることができないという事実を回避します。 現在持っているコンストラクタにHuman型の参照を含めることができ、なしと等しくなるように設定できます。この方法で、Humanオブジェクトを渡さないと、デフォルトでNoneになります。

+0

だけでなく、問題は、私はコピーコンストラクタと次の2つの__init__メソッドを持つことはできません – Harton

+0

スタンダールコンストラクタの両方を持っている必要があるということです。 私が最初に示唆したようにあなたはなし値を試すことができ、その後、コンストラクタ内で次のことが確認できます。 '人間がNone場合: ... 他: ...' –

1

C++では、HumanオブジェクトをFearedオブジェクトに変換しません。これは通常Pythonでも保持されます。あなたができることは、単一のヒューマンパラメータから新しいFearedオブジェクトを作成することです。

クラスには1つの__init__()メソッドしか存在できません。可能な解決策の中に1が懸念オブジェクトでクラスメソッドを追加することができます。

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) 
関連する問題