0
クラスField
を定義しました。私はA
とB
を定義しました。子クラスはField
です。クラス属性タイプを特定し、その関数を呼び出します。
私は別のクラスTool
を定義しました。これには、クラスField
、または他のクラス、または普通の変数のいずれかのクラス変数を含めることができます。変数のタイプがField
の場合は、fun1
と呼び出して結果を収集します。
私ができることを示唆してください。私はオブジェクト指向プログラミングの新機能です。
if isinstance(attribute, Field):
...
または可能性:
class Field(object):
def fun1(self):
return 'Field'
class A(Field):
def fun1(self):
return 'A fun1'
class B(Field):
def fun1(self):
return 'B fun1'
class Tool(object):
a1 = A()
b1 = B()
c1 = 'abc'
def fun1(self):
all_attributes = dir(self)
result_list = []
for attribute in all_attributes:
if attribute is of type Field:
result_list.append(attribute.fun1())
return return_list
dir()を使用して属性のリストを取得すると、それらはすべて文字列型です。 –
@ Rohit.nib - 右の理由でここにアドバイスをするのは難しいです。 'self'の属性を調べることは、奇妙なことです。 _usually_あなたは、属性が何であるか(そしてそれらのタイプ)を事前に知りたいです。 – mgilson
私はちょうど私が必要とするものを説明するためにsudoのコードを書きました。我々は他の方法でそれをやり遂げることができますか?私はそのタイプに応じてobjの関数を実行したかっただけです。 –