-
self, 클래스, 인스턴스컴퓨터 2019. 12. 16. 00:17
class Student: def study(): print("I'm studying") def study2(self): # self 를 받을지 여부는 순전히 자유이다. print("I'm studying2") name = "kid" Student.study() # 클래스는 메소드의 매개변수에 뭘 자동으로 넣지 않는다. Student().study2() # 인스턴스는 메소드의 매개변수에 자동으로 자신을 넣는다. Student.study2(Student()) # self를 받기로 한 메소드에는 꼭 값을 넣어줘야 하는데 클래스이므로 직접 입력해준다. print(Student().name) # 클래스나 인스턴스나 속성을 가진다. print(Student.name) output: I'm studying I'm studying2 I'm studying2 kid kid
클래스 내에 self.value 형태의 변수를 만들기 위해선 self를 매개변수로 갖는 함수 안에서 써야 한다.
그냥 name 처럼 쌩으로 써놔도 Student.name 형태로 참조할 수 있는데 self.name 이런 형태가 필요한 이유는 함수 안에다 쌩으로 name이라고 해놓으면 그 함수 안에서만 사용되는 지역변수이지 클래스 속성이 아니게 되기 때문이다.
class Student: def __init__(self): self.age = 25 name = "kid" print(Student.name) # 클래스나 인스턴스나 속성을 가질 수 있다. print(Student().name) print(Student().age) # 인스턴스는 self 매개변수에 자기 자신을 자동으로 넣는다. # 인스턴스 생성시 __init__이 자동실행되고 여기에 Stdent()이 들어간다. # 그래서 Student.age는 안되는 것이다. output: kid kid 25
'컴퓨터' 카테고리의 다른 글
언더스코어 "_" 의미 (0) 2019.12.29 인스턴스메서드, 클래스메서드, 스테틱메서드 + 바인딩에 대해 (0) 2019.12.24 변수, 인스턴스, 클래스의 관계 (0) 2019.12.13 이벤트 루프 실행 순서 + sleep (0) 2019.12.13 변수의 범위, scope, (static, 전역, 지역) (0) 2019.12.11