Python
 Computer >> コンピューター >  >> プログラミング >> Python

多重継承Pythonクラスでクラス変数はどのように機能しますか?


クラスは、Pythonの複数の基本クラスから派生させることができます。これは多重継承と呼ばれます。

多重継承では、すべての基本クラスの機能が派生クラスに継承されます。多重継承の構文は、単一継承に似ています。

class Super1:
    pass
class Super2:
    pass
class MultiDerived(Super1, Super2):
   pass

多重継承シナリオでは、指定された属性が現在のクラスで最初に検索されます。見つからない場合は、同じクラスを2回検索せずに、深さ優先、左右の方法で親クラスを検索し続けます。

したがって、上記のMultiDerivedクラスの例では、検索順序は[MultiDerived、Super1、Super2、object]です。この順序は、MultiDerivedクラスの線形化とも呼ばれ、この順序を見つけるために使用される一連のルールは、メソッド解決順序(MRO)と呼ばれます。

MROは、クラスが常にその親の前に表示されるようにします。複数の親の場合、順序は基本クラスのタプルと同じです。

クラスのMROは、__ mro__属性またはmro()メソッドと見なすことができます。前者はタプルを返し、後者はリストを返します。

>>> MultiDerived.mro()
[<class '__main__.MultiDerived'>,
 <class '__main__.Super1'>,
 <class '__main__.Super2'>,
 <class 'object'>]

  1. ネストされた文字クラスの減算はPythonでどのように機能しますか?

    ネストされた文字クラスの減算 減算された文字クラス内で完全な文字クラス構文を使用できるため、減算されるクラスからクラスを減算できます。 [0-9- [0-7- [0-3]]]は最初に0-7から0-3を減算し、[0-9-[4-7]]または[0-38-9]を生成します。文字列012389の任意の文字に一致します。 クラス減算は、常に文字クラスの最後の要素です。 [0-9-[4-7]a-d]は有効な正規表現ではありません。 [0-9a-d-[4-7]]と書き直す必要があります。減算はクラス全体で機能します。 ネストされた文字クラスの減算を使用することはできますが、2つのクラスを順番に減算す

  2. Pythonモジュールで変数スコープはどのように機能しますか?

    名前空間は、スコープを実装する方法です。 Pythonでは、各パッケージ、モジュール、クラス、関数、およびメソッド関数は、変数名が解決される「名前空間」を所有しています。関数、モジュール、またはパッケージが評価される(つまり、実行が開始される)と、名前空間が作成されます。それを「評価コンテキスト」と考えてください。関数などの実行が終了すると、名前空間は削除されます。変数は削除されます。さらに、名前がローカル名前空間にない場合に使用されるグローバル名前空間があります。 変数は通常、ローカル名前空間でのみ作成されます。グローバルステートメントと非ローカルステートメントは、ローカル名前空間以外の変