セクションにコンストラクタメソッド構文よりも重要である__new __()メソッドを記述し、このセクションでは、ケース__new __(方法の詳細は、その構造と方法との関係)を介して詳細に分析します。
まず、上記の場合
クラスの問題を説明するために、説明した円のこのセクションCirの場合は、基本的な情報が半径RADIUSの唯一つのメンバー、2つのメソッドが含まれている定義、すなわち__newある__()メソッドやコンストラクタ__init __()メソッド。
簡単に視聴情報については、我々は、関連するパラメータや情報の出力値を返します。
コードの第二に、ケース
1クラス定義
class Cir():
def __new__(cls,*args,**kwargs):
#看看Python传递给__new__的参数
print("Python传递给__new__的参数:\n***cls: ",cls,"\n***args: ",args,"\n***kwargs:",kwargs)
inst = super().__new__(cls)
print("__new__返回值:",inst)
return inst
def __init__(self,radius):
print("In init,self的值为:",self,", radius的值为:",radius)
self.radius = radius
2.クラスのインスタンスを作成し、表示する(対話モードの実行)
c=Cir(10)
c #查看c的数据
Cir #查看类的数据
3.ケースのスクリーンショットと解釈
三点以下上のスクリーンショットから分かるように:
1)メソッドを__init__方法__new__実行される前に;
2)それが赤ペン標識上図に見ることができるところから、__戻る__new__にnew__親クラスのメソッドを呼び出します;自己インスト値とINIT、C及びインスタンスの例は、アドレスの値が3を示し、同じであり、親クラス__new__のメソッドによって返された後に作成
3)上図の黄色のマーク部から見ることができますパラメータの方法は、CLS __new__ Cirの対応するクラスです。
次のようにこのセクションでは、要約、__new __()メソッドと部分__init__方法との関係によって場合について説明:
__ new__メソッドは、オブジェクト実行、すなわちのインスタンスを返した後1. __new__は、方法__init__方法の前に行われます; __new__方法作成していないインスタンスを実行する前に、パラメータ自己コンストラクタが実行__new__方法の最後のインスタンスの後に送られる前記
2 __new__方法を自動的にPythonが渡されるパラメータ、パラメータが作成インスタンスを含みます「クラス名は」クラスに対応し、作成するインスタンスが渡されたすべてのパラメータを作成します。
Pythonプログラマとは接触を助けていない古い猿の学習Pythonの学習経験の漸進的な導入のための要約記事の旧猿のPython(https://blog.csdn.net/LaoYuanPython)シリーズは、簡単にはPythonを入力することができます世界。
批判を歓迎し、あなたの注意をありがとう!