Pythonのオブジェクト指向(5)クラスのメンバー

クラスのメンバー:6.8オブジェクト指向

  1. 下位区分のメンバーで構成

    • 次のようにクラスは、大きく分けて、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. クラスのプライベートメンバー

    • パブリックメンバ:クラスの各メンバーのための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()  # 派生类中不能访问
    • 概要:これらの民間メンバーのために、彼らはクラス内でのみ使用し、使用するクラスと派生クラスの外にすることはできません。

      *シモンズ:プライベートメンバーにアクセスする必要があり、それはオブジェクト._クラス__属性名を指定できますが、間違いありません!!! *

  3. クラスの他のメンバー:このクラスの他のメンバーが主な方法である:メソッドが含まれます:一般的な方法、静的メソッドとクラスメソッドを、三つの方法全てがメモリ内のクラスに属し、違いがコールする異なる方法です。

    • 方法の例:
      • 定義:最初のパラメータオブジェクトのインスタンスである、パラメータ名は、一般として合意されている:「自己」、インスタンスのプロパティとメソッドを通過する(また、プロパティおよびメソッドなどを送信することができます)。
      • コール:それは唯一のオブジェクトのインスタンスによって呼び出すことができます
    • クラスメソッド:
      • 定義:デコレータ@classmethod。最初の引数は、クラス・オブジェクトが現在、このパラメータは、一般的に摩耗特性及びメソッド(例としては、属性およびメソッドを渡すことはできません)それを通して名「CLS」、合意されたプライマーのクラスでなければなりません。
      • 呼び出し:インスタンスオブジェクトとオブジェクトクラスを呼び出すことができます
    • 静的メソッド:
      • 定義:デコレータは、何も「自己」と「CLS」のパラメータをランダムパラメータを@staticmethodませんが、この方法は、任意のクラスまたはインスタンス属性やメソッドの本体で使用することはできません;.
      • 呼び出し:インスタンスオブジェクトとオブジェクトクラスを呼び出すことができます

おすすめ

転載: www.cnblogs.com/zhangdadayou/p/11415367.html