私は同じ方法で、しかし異なるクラスで使いたい属性の2つのセットを持っています。Python 3の異なるクラスで同じクラス属性を使用する方法は?
class Base:
def printAttr():
print(attr)
class MixIn1:
attr = "Monty"
class MixIn2:
attr = "Python"
class Combo1(Base, MixIn1):
pass
class Combo2(Base, MixIn2):
pass
c1 = Combo1()
print(c1.attr) # it is assigned
c1.printAttr()
結果はNameError: name 'attr' is not defined
です:私はクラスがsuper
呼び出し、不要な合併症を避けるために、属性としてこれらのセットにミックスしようとしています。明らかに、MixIn1.attr
を明示的に呼び出すと動作しますが、このコードをクラス自体に入れることは同じです。
経済的に異なるattr
に同じ処理ロジックを使用するにはどうすればよいですか?
エラーは表示されているコードと一致しません。 –
実際のコードを表示してください。 'printAttr'に' self'パラメータがないので、あなたが投稿したコードはTypeErrorをスローします。 'attr'がそのメソッドで定義されていないので、NameErrorを投げます。 –
また、 'printAttr'メソッドに' self'パラメータがありません。 –