派仙属性/方法の全て?


1.パイラインのすべての属性(attribute)
  • インスタンス属性
  • クラス属性
  • 1-0. インスタンス属性vsクラス属性
  • クラスプロパティ:すべてのインスタンスが共有されます.
  • すべてのインスタンスで使用する必要がある値を格納します.
  • インスタンスプロパティ:各インスタンスとは独立しています.
  • を使用すると、各インスタンスに値を追加する必要があります.
    1-1. インスタンスのプロパティ
    >>> class Foo:
    ...     def __init__(self):
    ...         self.a = "a"
    ...
    >>> 
    >>> f = Foo()
    >>> f.a
    'a'
    >>> Foo.a
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: type object 'Foo' has no attribute 'a'
    >>>
  • "init"の方法で作成する属性は"インスタンス属性"
  • である.
    1-2. クラス属性
    >>> class Foo:
    ...     a = "a"
    ...
    >>>
    >>> Foo.a  # 클래스로 속성 'a'에 접근
    'a'
    >>> f = Foo()  
    >>> f.a    # 인스턴스(self)로 속성 'a'에 접근
    'a'
    >>>
    >>> f.__dict__
    {}
    >>> Foo.__dict__
    mappingproxy({'__module__': '__main__', 'a': 'a', '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None})
    >>>
  • クラス属性直接クラスに属性
  • を作成する.
  • クラス属性はクラスであり、インスタンス(self)からアクセスすることもできます!
  • は、対応するインスタンス属性がない場合、クラス属性で検索できるためです.
    属性;メソッド名の検索順序
    インスタンス>クラス(Instance>Class)
  • このクラスのプロパティは通常いつ使用されますか?!今まで業務に
  • と書いたことがありません.
    2.Pythonのあらゆる方法
  • インスタンスメソッド=>インスタンス(self)を介して
  • にアクセス
  • 静的メソッド=>クラスで直接=>純関数の作成を呼び出す場合!
  • クラスメソッド=>クラス内で直接呼び出す=>クラスプロパティ/メソッドアクセス時!
  • 2-0. インスタンス/静的/クラスメソッドはいつ使用しますか?
    ????
    2-2. スタティツクメソッド
    class IAmClass:
        def __init__(self):
        	self.a = 1
        
        @staticmethod
        def i_am_method(para1, para2): # 파라미터에 "self"가 없어요!
            pass
  • 静的メソッドはパラメータselfを受け入れない
  • つまり、self.aなどのインスタンス属性にアクセスできません!
  • !静的メソッドは、インスタンスプロパティとインスタンスメソッドを必要としない場合に使用します.
  • 静的メソッドボリュームとは?
  • 静的メソッドは、外部状態に影響を及ぼさない純粋な関数(純粋な関数)を作成するために使用される.
  • 静的メソッドインスタンスの状態を変更しないメソッドを作成する
    じゅんかんすう
    純関数は副作用がなく、入力値は同じで、常に同じ出力値を返します.
  • 2-3. クラスメソッド
    class IAmClass:
    	count = 0
        def __init__(self):
            self.a = 1
    
    	@classmethod
    	def i_am_method(cls, para1, para2): # 파라미테어 cls가 있어요!!
            print(cls.count)
  • クラスメソッドの最初のパラメータは「cls」です!
  • クラスメソッドは静的メソッドと同様に、インスタンスを必要とせずに呼び出されます.
  • クラスメソッドメソッドメソッドでは、メソッドで「クラスプロパティ、クラスメソッド」にアクセスできます.
  • Reference
  • https://dojang.io/mod/page/view.php?id=2378
  • https://dojang.io/mod/page/view.php?id=2379