ファイル内にある次のコード例を参照してください。
classattr.py
class BaseClass(object):
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
def somemethod(self):
return "This is returned when I do Base.__dict__"
class ChildOfBaseClass(BaseClass):
def __init__(self, param1, param2, param3, param4):
super(ChildOfBaseClass, self).__init__(param1, param2)
self.param3 = param3
self.param4 = param4
def somemethod(self, param3, param4):
a = param3 + param4
return a
インスタンスを作成する前に、クラスのすべての属性 ( などは属性と呼ばれると想定しています)param1
を取得したいと考えています。param2
コマンドにとdir(classattr.BaseClass)
が表示されません。ただし、メソッドは返します。param1
param2
somemethod
次の理由で属性を取得しようとしています。モジュールclassattr
は、クラスの名前が別のファイルにインポートされているclassattr.BaseClass
かclassattr.ChildOfBaseClass
、関数への入力として提供されています。実行時にどちらであるかを判断し、インスタンスを作成するときに適切な入力 (param1
前者のparam2
場合、または後者の場合はすべてのパラメーター)param1
を使用したいと考えています。param4
私がこれを行うことを考えていた方法は、クラスがparam3
属性として持っているかどうかを確認し、正しい入力でインスタンスを作成することです。確認する別の良い方法はありますか?別の方法は、param3
andparam4
を入力として持つことですBaseClass
何もしない場合でも、常に 4 つのパラメーターすべてを入力としてインスタンスを作成します。しかし、それは物事を行う適切な方法とは思えません。
ありがとうございました。