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

Pythonクラスブラウザのサポート


pyclbr Pythonライブラリのモジュールは、Pythonモジュールで定義された関数、クラス、およびメソッドに関する情報を抽出します。情報は、モジュールをインポートするのではなく、Pythonソースコードから抽出されます。

このモジュールはreadmodule()を定義します 辞書マッピングモジュールレベルのクラス名をクラス記述子に返す関数。この関数は、モジュール名をパラメーターとして受け取ります。パッケージ内のモジュールの名前である可能性があります。その場合、pathはsys.pathの前に付けられた一連のディレクトリパスであり、モジュールのソースコードを見つけるために使用されます。

次のコードは、readmodule()関数を使用して、Pythonライブラリのソケットモジュール内のクラスとメソッドを解析します。

 import pyclbrmod =pyclbr.readmodule( "socket")def show(c):s ="class" + c.name print(s + ":")methods =c.methods.items()for method、linenoメソッド内:print( "def" + method)print()for k、v in mod.items():show(v)
<前>クラスIntEnum:クラスIntFlag:DEF _missing_ DEF _create_pseudo_member_デフ__or__デフ__and__デフ__xor__ DEF __invert__class _GiveupOnSendfile:クラスソケット:デフ__init__ DEF __enter__デフ__exit__デフ__repr__デフ__getstate__デフDUP defを受け入れるデフメイクデフ_sendfile_use_sendfileデフ_sendfile_use_sendデフ_check_sendfile_paramsデフのsendfile def _decref_socketios def _real_close def close def detach def family def type def get_inheritable def set_inheritableclass SocketIO:def __init__ def readinto def write def readable def writable def seekable def fileno def name def mode def close

pyclbrモジュールは、 readmodule_ex()も定義します モジュールで定義された各関数およびクラスの関数またはクラス記述子を含むディクショナリを返す関数。返されたディクショナリは、モジュールレベルの関数名とクラス名を記述子にマップします。ネストされたオブジェクトは、親の子ディクショナリに入力されます。

>>> x =pyclbr.readmodule_ex('socket')>>> for k、v in x.items():print(k、v)IntEnum  IntFlag _intenum_converter_GiveupOnSendfileソケットfromfdfromfd SocketIO  create_connection 
 これらの関数は、カスタムモジュールと一緒に使用して、ユーザー定義のクラスとメソッドのディレクトリをフェッチすることもできます。

次の例では、モジュール'triangles.py'を使用してそのクラス構造を取得しています。

#triangles.pyimport mathclass Triangle:def __init __(self、a、b、c):self.a =a self.b =b self.c =c def area(self):s =(self.a + self.b + self.c)/ 2 area =math.sqrt(s *(s-self.a)*(s-self.b)*(s-self.c))return areaclass EquiTriangle(Triangle):def __init __(self、a):b =a c =a super().__ init __(a、b、c)def area(self):area =math.sqrt(3)* pow(self.a、2)/ 4 returnエリア

ここで、「triangles」モジュールのクラスとメソッドを取得します。

>>> br =pyclbr.readmodule_ex('triangles')>>> for i、j in br.items():print(i、j.methods)Triangle {'__init __':3、'area': 7} EquiTriangle {'__init__':12、'area':16} 

pyclbrモジュールは、クラスオブジェクトと関数オブジェクトの2つのオブジェクトを定義します。

機能 オブジェクトは次の属性を持っています

ファイル
関数が定義されているファイルの名前。
モジュール
記述された関数を定義するモジュールの名前。
名前
関数の名前。
定義が始まるファイルの行番号。

子供
名前を記述子にマッピングして関数とクラスをネストしました。
lineno
最上位関数の場合、なし。ネストされた関数の場合、親。

クラス オブジェクトには、上記に加えてさらに2つの属性があります

記述されているクラスの直接の基本クラスを記述するClassオブジェクトのリスト。
メソッド
メソッド名を行番号にマッピングする辞書。
super

  1. Pythonでの継承

    この記事では、Python3.xでの継承と拡張クラスについて学習します。またはそれ以前。 継承は実際の関係をうまく表し、再利用性を提供し、推移性をサポートします。開発時間が短縮され、メンテナンスが容易になり、拡張も容易になります。 継承は大きく5つのタイプに分類されます- シングル 複数 階層的 マルチレベル ハイブリッド 上の図に示されているように、継承とは、実際に親クラスのオブジェクトを作成せずに、他のクラスの機能にアクセスしようとするプロセスです。 ここでは、単一の階層型継承の実装について学習します。 単一継承 例 # parent class class Studen

  2. Python例外基本クラス

    他の高級言語と同様に、Pythonにもいくつかの例外があります。問題が発生すると、例外が発生します。 ZeroDivisionError、AssertionErrorなどのさまざまな種類の例外があります など。すべての例外クラスはBaseExceptionクラスから派生しています。 コードは組み込みの例外を実行することも、コードでこれらの例外を発生させることもできます。ユーザーは、例外から独自の例外を派生させることができます クラス、または例外の他の子クラスから クラス。 BaseExceptionは、他のすべての例外の基本クラスです。ユーザー定義クラスをこのクラスから直接派生させること