六一
グローバル変数とゾーン変数!
また,領域変数は最近の変数を取得し,その位置の関数が終了すると領域変数も終了する.
クラスとメソッド、プロパティ
オブジェクトとインスタンスがクラスに関連付けられている場合、それらの違いをインスタンスと呼びます.これは特別な意味ではありません.
クラス内でオブジェクトの初期化を行う場合が多い.
その際に使用したのは以下の通りです.
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をパラメータとして受信します.また、クラスのプロパティとオブジェクトにはアクセス可能なフィーチャーがあります.
Reference
この問題について(六一), 我々は、より多くの情報をここで見つけました https://velog.io/@soe8192/파이썬-강의-6-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol