クラスのメンバー:6.8オブジェクト指向
下位区分のメンバーで構成
次のようにクラスは、大きく分けて、2つの領域に分割します
class A: name="haha"#第一部分 静态字段(静态变量) def __init__(self):#第二部分 方法部分 pass def func(self):#第二部分:方法部分 pass
次のように特定の分けることができます。
class A: company_name="haha" #静态变量 (静态字段) _iphone="564545"#私有静态变量(私有静态字段) def __init__(self,name,age):#特殊方法 self.name=name#对象属性 self._age=age#私有对象属性(私有普通字段) def func1(self):#普通方法 pass def __func(self):#私有方法 print(666) @classmethod#类方法 def class_func(cls): """定义类方法,至少有一个cls参数""" print('类方法') @staticmethod#静态方法 def static_func(): """定义静态方法,无默认参数""" print("静态方法") @property#属性 def prop(self): pass
クラスのプライベートメンバー
パブリックメンバ:クラスの各メンバーのための2つの形式がありますどこでもアクセスすることができます。クラスにプライベートメンバーは内部アクセスのみ
アクセスを制限するプライベートメンバーとパブリックのメンバーが異なります。
静的フィールド(静的プロパティ)
パブリック静的フィールド:クラスがアクセスすることができ、内部クラスがアクセスすることができ、派生クラスがアクセスすることができます
class C: name = "公有静态字段" def func(self): print C.name class D(C): def show(self): print C.name C.name # 类访问 obj = C() obj.func() # 类内部可以访问 obj_son = D() obj_son.show() # 派生类中可以访问
プライベート静的フィールド:内部のみのアクセス
class C: __name = "私有静态字段" def func(self): print C.__name class D(C): def show(self): print C.__name C.__name # 不可在外部访问 obj = C() obj.__name # 不可在外部访问 obj.func() # 类内部可以访问 obj_son = D() obj_son.show() #不可在派生类中可以访问
通常のフィールド(オブジェクト属性)
共通のパブリックフィールドは:オブジェクトがアクセスすることができ、内部アクセスクラスは、派生クラスがアクセスできます
class C: def __init__(self): self.foo = "公有字段" def func(self): print self.foo # 类内部访问 class D(C): def show(self): print self.foo # 派生类中访问 obj = C() obj.foo # 通过对象访问 obj.func() # 类内部访问 obj_son = D(); obj_son.show() # 派生类中访问
プライベート一般的なフィールド:内部クラスのみアクセスでき
class C: def __init__(self): self.__foo = "私有字段" def func(self): print self.foo # 类内部访问 class D(C): def show(self): print self.foo # 派生类中访问 obj = C() obj.__foo # 通过对象访问 ==> 错误 obj.func() # 类内部访问 ==> 正确 obj_son = D(); obj_son.show() # 派生类中访问 ==> 错误
方法:
パブリックメソッド:オブジェクトにアクセスすることができ、内部のアクセス・クラス、派生クラスはアクセスでき
class C: def __init__(self): pass def add(self): print('in C') class D(C): def show(self): print('in D') def func(self): self.show() obj = D() obj.show() # 通过对象访问 obj.func() # 类内部访问 obj.add() # 派生类中访问
プライベートメソッド:内部クラスのみアクセスでき
def __init__(self): pass def __add(self): print('in C') class D(C): def __show(self): print('in D') def func(self): self.__show() obj = D() obj.__show() # 通过不能对象访问 obj.func() # 类内部可以访问 obj.__add() # 派生类中不能访问
概要:これらの民間メンバーのために、彼らはクラス内でのみ使用し、使用するクラスと派生クラスの外にすることはできません。
*シモンズ:プライベートメンバーにアクセスする必要があり、それはオブジェクト._クラス__属性名を指定できますが、間違いありません!!! *
クラスの他のメンバー:このクラスの他のメンバーが主な方法である:メソッドが含まれます:一般的な方法、静的メソッドとクラスメソッドを、三つの方法全てがメモリ内のクラスに属し、違いがコールする異なる方法です。
- 方法の例:
- 定義:最初のパラメータオブジェクトのインスタンスである、パラメータ名は、一般として合意されている:「自己」、インスタンスのプロパティとメソッドを通過する(また、プロパティおよびメソッドなどを送信することができます)。
- コール:それは唯一のオブジェクトのインスタンスによって呼び出すことができます
- クラスメソッド:
- 定義:デコレータ@classmethod。最初の引数は、クラス・オブジェクトが現在、このパラメータは、一般的に摩耗特性及びメソッド(例としては、属性およびメソッドを渡すことはできません)それを通して名「CLS」、合意されたプライマーのクラスでなければなりません。
- 呼び出し:インスタンスオブジェクトとオブジェクトクラスを呼び出すことができます
- 静的メソッド:
- 定義:デコレータは、何も「自己」と「CLS」のパラメータをランダムパラメータを@staticmethodませんが、この方法は、任意のクラスまたはインスタンス属性やメソッドの本体で使用することはできません;.
- 呼び出し:インスタンスオブジェクトとオブジェクトクラスを呼び出すことができます
- 方法の例: