[Python응용] 1. 인스턴스 사용과 self의 의미
인스턴스 객체를 다양하게 사용하는 방법
인스턴스 객체 멤버 변수 이름 해석 순서
- 인스턴스 객체 내부
- 클래스 객체 내부
- 전역공간
두개의 인스턴스 객체를 생성하여 이름을 해석하는 방법
class Person:
name = "Default Name"
p1 = Person()
p2 = Person()
p1.name = "전우치"
print("p1's name", p1.name)
p1's name 전우치
print("p2's name", p2.name)
p2's name Default Name
클래스에 새로운 멤버 변수 title 추가하는 방법
Person.title = "New title"
print("p1's title:", p1.title)
p1's title: New title
print("p2's title:", p2.title)
p2's title: New title
print("Person's title:", Person.title)
Person's title: New title
인스턴스 객체에 동적으로 멤버 변수를 추가하는 법
p1.age = 20 # p1객체에 추가한 age는 p1에서만 접근이 가능
print("p1's age:", p1.age)
p1's age: 20
print("p2's age:", p2.age)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Person' object has no attribute 'age'
self라는 단어의 의미
- 자기 자신을 참조하는 의미의 self
잘못된 예
str = "Not Class Member"
class GString:
str = ""
def set(self, msg):
self.str = msg
def print(self):
print(str)
g = GString()
g.set("First Message")
g.print()
Not Class Member
올바른 예
str = "Not Class Memeber"
class GString:
str = ""
def set(self, msg):
self.str = msg
def print(self):
print(self.str)
g = GString()
g.set("First Message")
g.print()
First Message