Python 2で継承せずに別のクラスのメソッドを再利用するにはどうすればよいですか?

current_panda

私のクラスのうちの2つは同じメソッドを持つ必要がありますが、それらは継承によって関連付けられていません。

以下はPython3で機能します。

class A(object):
    def __init__(self):
        self.x = 'A'

    def printmyx(self):
        print(self.x)

class B(object):
    def __init__(self):
        self.x = 'B'

    printmyx = A.printmyx

a = A()
b = B()

a.printmyx()
b.printmyx()

とプリント

A
B

しかし、Python2では私は

Traceback (most recent call last):
  File "py2test.py", line 18, in <module>
    b.printmyx()
TypeError: unbound method printmyx() must be called with A instance as first argument (got nothing instead)

問題は、Python 3printmyxでは通常の関数であるのに対し、Python2ではバインドされていないメソッドであるということだと思います

Python 2でコードを機能させる方法は?

編集

私の実際のコードでは、AB別の親クラスから継承します。それらは1つのヘルパーメソッドを共有する必要がありますが、互いに他の関係はありません。

current_panda

どうやら、Python 2では、バインドされていないメソッドが作成された元の関数がim_func属性に格納されているようです。1

Python3と同じようにPython2でコードを機能させるには、次を使用します。

printmyx = A.printmyx.im_func

Bさんの体。

1 Python2データモデルドキュメントの標準タイプ階層セクションで説明されています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

継承を使用せずにPythonクラスに別名を付けて別の名前にするにはどうすればよいですか?

分類Dev

Odooの純粋なPythonクラスから継承してメソッドを変更するにはどうすればよいですか?

分類Dev

Pythonで継承されたクラスではなく、現在のクラスのインスタンスを返すようにメソッドを定義するにはどうすればよいですか?

分類Dev

Pythonの別のクラスで別のクラスメソッド値を使用するにはどうすればよいですか?

分類Dev

Pythonで既存のクラスにメソッドを追加するにはどうすればよいですか?

分類Dev

別のクラスから継承するPythonクラスの初期定義に追加するにはどうすればよいですか?

分類Dev

Pythonで初期化されたクラスを再利用するにはどうすればよいですか?

分類Dev

Pythonで別のクラスからクラスメソッドを呼び出すにはどうすればよいですか?

分類Dev

Python2で、エンドユーザーに明示的に含めることを要求せずに、子クラスメソッドに親メソッドを強制的に呼び出すにはどうすればよいですか?

分類Dev

Pythonクラスメソッドに独自のフィールドを参照するように指示するにはどうすればよいですか?

分類Dev

Pythonで、クラス外の通常の関数でクラスのメソッドを使用するにはどうすればよいですか?

分類Dev

Pythonで角括弧を使用するクラス(pandas DataFrameのlocなど)にメソッドを実装するにはどうすればよいですか?

分類Dev

Pythonで新しいクラスを初期化せずに継承されたクラスの属性を編集するにはどうすればよいですか?

分類Dev

Pythonで別のファイルからクラスメソッドを呼び出すにはどうすればよいですか?

分類Dev

Pythonの `super()`からインスタンスメソッドの次の行の親クラスを取得するにはどうすればよいですか?

分類Dev

Pythonで、クラスインスタンスのメソッドを継承してオーバーライドし、この新しいバージョンを古いバージョンと同じ名前に割り当てるにはどうすればよいですか?

分類Dev

関数/メソッド/クラスが組み込みのPythonかどうかを確認するにはどうすればよいですか?

分類Dev

Python:スーパークラスから継承されたメソッドの下でサブクラスを「閉じる」ようにする方法

分類Dev

Python 3のクラスobjで「in」を使用するメソッドを追加するにはどうすればよいですか?

分類Dev

Pythonのすべてのクラスメソッドにグローバル変数を使用するにはどうすればよいですか?

分類Dev

Pythonメソッドチェーンを別のメソッドと組み合わせるにはどうすればよいですか

分類Dev

Pythonでスーパークラスのメソッドの名前を変更するにはどうすればよいですか?

分類Dev

Pythonのクラスメソッド内で「静的」クラス変数にアクセスするにはどうすればよいですか?

分類Dev

これらのDNSデータベースメソッドのPythonクラスを作成するにはどうすればよいですか?

分類Dev

Pythonで辞書の値をクラスメソッドに設定するにはどうすればよいですか?

分類Dev

Pythonのmin()メソッドからリストを取得するにはどうすればよいですか?

分類Dev

Pythonクラスのメソッドのリストを取得するにはどうすればよいですか?

分類Dev

Pythonで別のクラスから継承するクラスのコンストラクターを作成するにはどうすればよいですか?

分類Dev

関数分布のmeanとstddevを返す一般的なPythonクラスメソッドを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    継承を使用せずにPythonクラスに別名を付けて別の名前にするにはどうすればよいですか?

  2. 2

    Odooの純粋なPythonクラスから継承してメソッドを変更するにはどうすればよいですか?

  3. 3

    Pythonで継承されたクラスではなく、現在のクラスのインスタンスを返すようにメソッドを定義するにはどうすればよいですか?

  4. 4

    Pythonの別のクラスで別のクラスメソッド値を使用するにはどうすればよいですか?

  5. 5

    Pythonで既存のクラスにメソッドを追加するにはどうすればよいですか?

  6. 6

    別のクラスから継承するPythonクラスの初期定義に追加するにはどうすればよいですか?

  7. 7

    Pythonで初期化されたクラスを再利用するにはどうすればよいですか?

  8. 8

    Pythonで別のクラスからクラスメソッドを呼び出すにはどうすればよいですか?

  9. 9

    Python2で、エンドユーザーに明示的に含めることを要求せずに、子クラスメソッドに親メソッドを強制的に呼び出すにはどうすればよいですか?

  10. 10

    Pythonクラスメソッドに独自のフィールドを参照するように指示するにはどうすればよいですか?

  11. 11

    Pythonで、クラス外の通常の関数でクラスのメソッドを使用するにはどうすればよいですか?

  12. 12

    Pythonで角括弧を使用するクラス(pandas DataFrameのlocなど)にメソッドを実装するにはどうすればよいですか?

  13. 13

    Pythonで新しいクラスを初期化せずに継承されたクラスの属性を編集するにはどうすればよいですか?

  14. 14

    Pythonで別のファイルからクラスメソッドを呼び出すにはどうすればよいですか?

  15. 15

    Pythonの `super()`からインスタンスメソッドの次の行の親クラスを取得するにはどうすればよいですか?

  16. 16

    Pythonで、クラスインスタンスのメソッドを継承してオーバーライドし、この新しいバージョンを古いバージョンと同じ名前に割り当てるにはどうすればよいですか?

  17. 17

    関数/メソッド/クラスが組み込みのPythonかどうかを確認するにはどうすればよいですか?

  18. 18

    Python:スーパークラスから継承されたメソッドの下でサブクラスを「閉じる」ようにする方法

  19. 19

    Python 3のクラスobjで「in」を使用するメソッドを追加するにはどうすればよいですか?

  20. 20

    Pythonのすべてのクラスメソッドにグローバル変数を使用するにはどうすればよいですか?

  21. 21

    Pythonメソッドチェーンを別のメソッドと組み合わせるにはどうすればよいですか

  22. 22

    Pythonでスーパークラスのメソッドの名前を変更するにはどうすればよいですか?

  23. 23

    Pythonのクラスメソッド内で「静的」クラス変数にアクセスするにはどうすればよいですか?

  24. 24

    これらのDNSデータベースメソッドのPythonクラスを作成するにはどうすればよいですか?

  25. 25

    Pythonで辞書の値をクラスメソッドに設定するにはどうすればよいですか?

  26. 26

    Pythonのmin()メソッドからリストを取得するにはどうすればよいですか?

  27. 27

    Pythonクラスのメソッドのリストを取得するにはどうすればよいですか?

  28. 28

    Pythonで別のクラスから継承するクラスのコンストラクターを作成するにはどうすればよいですか?

  29. 29

    関数分布のmeanとstddevを返す一般的なPythonクラスメソッドを作成するにはどうすればよいですか?

ホットタグ

アーカイブ