六一


グローバル変数とゾーン変数!

  • グローバル変数は、その名の通りすべての範囲で使用でき、領域変数は関数の定義または狭い範囲に使用されます.
  • 上記のように、任意の関数で値を調整すると、すべての位置の変数の値が変わります.
    また,領域変数は最近の変数を取得し,その位置の関数が終了すると領域変数も終了する.

    クラスとメソッド、プロパティ


    オブジェクトとインスタンスがクラスに関連付けられている場合、それらの違いをインスタンスと呼びます.これは特別な意味ではありません.
    クラス内でオブジェクトの初期化を行う場合が多い.
    その際に使用したのは以下の通りです.
    class 클래스명:
    	def __init__(self, a, b): #해당 코드는 외우는거 추천 self는 필수적으로 필요하며 init은 대부분 필요하다 없다면 일반 함수와 다를바 없으니.
        	self.a = a
            self.b = b
    コードのようにaとbを入力する
    self.aとself.この言葉は
    インスタンスとしてクラスを受け取ったら
    maria = class()
    ここでselfはマリア自身を表します.
    マリアのaに入力値aを入れます.
    マリアのbに入力値bを加えることを意味する.

    方法


    また、クラスにはメソッドとプロパティがあります.
    その中でまず知っておきたいのが方法です.
    前述したように、関数を表す方法と同じです.パラメータにselfがあるだけです.

    取らない場合もあります


    メソッドex)
    class knight:
        def __init__(self, health, mana, armor):
            self.health = health
            self.mana = mana
            self.armor = armor
        def slash(self):
            print("베기")
    x = knight(health=542.4, mana=210.3, armor=38)
    print(x.health, x.mana, x.armor)
    x.slash()

    ツールバーの

    # 이런식으로 되면 원하는 결과가 나오지 않는다.
    class Person:
        bag = [] #클래스 속성은 공유되는 변수로 해당 person내의 지역변수이다. 클래스는 함수와 달리 호출 후 끝나는 객체가 아니라서 메모리를 계속 가지고 있다
        
        def put_bag(self, stuff):
            #self.bag.append(stuff) 해당 코드도 돌아가지만 bag은 공용인 bag이므로 인스턴스가 아니라 person의 객체가 더 옳은 표현
            Person.bag.append(stuff)
            
    james = Person()
    james.put_bag('책')
    
    maria = Person()
    maria.put_bag('열쇠')
    
    print(james.bag) #클래스 내의 변수 호출 하지만 james의 가방과 maria의 가방은 Person 클래스 내에서 공유되고 있다.
    print(maria.bag)
    class Person:
        def __init__(self):
            self.bag = [] 
        def put_bag(self, stuff):
            self.bag.append(stuff)
    
            
    james = Person()
    james.put_bag('책')
    
    maria = Person()
    maria.put_bag('열쇠')
    
    print(james.bag) #바꾼 코드는 init으로 개인용 가방을 만든 것이다. 이로써 공유되던 가방이 각자에게로 주어지게 되었다
    print(maria.bag)
    プロパティにアクセスするときのクラス名.属性名で近いのが正しいです.

    専用オブジェクトと属性


    専用オブジェクトと属性
    クラスの外部からアクセスできません.内部からのみアクセスできます.
    したがって,直接呼ぶことは不可能である.
    #비공개 객체의 예
    class person:
        def __init__(self, name, age, address, wallet): #self는 무조건 받아야하는 인자이며 추가적인 인자를 받아서 초기화 할 수 있다. 구조체 용도?
            self.hello = '안녕하세요'
            self.name = name
            self.age = age
            self.address = address
            self.__wallet = wallet #비공개 속성은 __를 붙여야함 #오류가 나는데 갑 변경도 안되고 호출도 안된다
             
        def greeting(self):
            print('{0}, 저는 {1}입니다.'.format(self.hello, self.name))
            
        def pay(self, amount):
            self.__wallet -= amount
            print('{}는 지갑에 {}원이 남았습니다.'.format(self.name, self.__wallet))
    
    maria = person('마리아', 20, '서초구 반포동', 10000)
    maria.greeting()
    maria.pay(3000)
    
    print('\n이름 : {0}'.format(maria.name))
    print('나이 : {0}'.format(maria.age))
    print('주소 : {0}'.format(maria.address))
    #maria.__wallet -= 1000 #오류가 나는데 갑 변경도 안되고 호출도 안된다 하지만 클래스 안의 메소드에서는 사용 가능
    このようにpayでは近づくことができますが.
    下のコメントなどのクラス.プライベートオブジェクトで呼び出せません

    プライベート属性


    上記と同じ属性ですが、非公開の属性です.
    同じ方法

    静的メソッドとクラスメソッド


  • @staticmethodの前の静的メソッドは通常の関数と同じでselfパラメータも必要ありません.このとき、オブジェクトまたはプロパティにアクセスしようとするとdefineエラーが発生します.

  • @classmethodを前のクラスメソッドに追加するにはselfパラメータは必要ありませんが、clsをパラメータとして受信します.また、クラスのプロパティとオブジェクトにはアクセス可能なフィーチャーがあります.