私はPythonでメソッドとコンストラクタを含むクラスを持っています。コンストラクタの戻り値はオブジェクトですが、私はnumbers.Number
型のようなクラス(コンストラクタ)の戻り値が必要です。オブジェクトのスーパークラスを変更するには?
このクラスのスーパークラスとしてnumbers.Number
を追加してクラスの戻り値を変更することはできますか?もしそうなら、誰かがそれを行う方法を記述できますか?
class Num(Parent):
#Some Code
#Here Parent must be inherited
class Foo(Num):
#Foo Should return of type numbers.Number
#Here Num must be inherited
今、私たちはFoo
のコンストラクタを呼び出すたびFoo
がnumber.Number
値を返すようにしたいです。
あなたのファクトリクラスは数字を持っている必要はありません。その型のオブジェクトを作成するための基本クラスとしてのNumber。その型のオブジェクトを作成して返すだけの方法があります。たぶん私は何かが欠けているでしょう。 –
Pythonのコンストラクターは何も返しません。それらがすでにあるクラスのインスタンスと呼ばれる時には、コンストラクタは既に必要な初期化を行います。作成されたオブジェクトの型を決定する '__new __()'メソッドをオーバーライドすることで、あなたが望むことができるかもしれません。あるいは、「仮想コンストラクター」と呼ばれることもあり、その用語を検索する必要があるかもしれません。あなたがしようとしていることを説明するあなたの質問に実際のコードがあったら、より良い(または少なくとももっと具体的な)答えを得るかもしれません。 – martineau
@martineauあなたは正しい方法をとっているかもしれませんが、質問で私が指定したコードでそれを詳しく説明できますか? – Meet