[Python] 클래스(class)
생성자
파이썬의 생성자는 단지 멤버 초기화의 목적으로 쓰입니다. 그렇기에 생성자명은 __init__으로 고정되어있습니다.
class Person():
def __init__(self):
pass
클래스에서 __init__() 메서드의 첫 번째 파라미터는 무조건 self여야 합니다. 'self'는 C++, Java에서의 'this'와 같습니다.
상속
위의 예제에서 '어라?'하는 부분이 있으신가요? 클래스명 뒤에 () 괄호가 있는데요, 이는 상속을 위한 파이썬의 문법입니다.
class Person():
def __init__(self, name):
self.name = name
class Professor(Person):
def __init__(self, name):
self.name = "Professor " + name
class Student(Person):
def __init__(self, name):
self.name = "Student " + name
getter/setter 메서드
C++, Java에는 멤버변수를 private 접근 지정자로 설정하고, getter/setter 메서드를 이용해 멤버변수를 접근/설정합니다. 하지만, 파이썬은 private 접근 지정자가 없고 모든 멤버변수, 멤버함수는 public 접근 지정자를 가집니다. 아무리 그렇다지만 멤버변수에 직접 접근하는건 아무래도 찝찝합니다. 따라서, 다음과 같이 getter/setter 메서드를 정의할 수 있습니다.
class MyObject():
def __init__(self, input_name):
self.hidden_name = input_name
def get_name(self):
print("Called get_name")
return self.hidden_name
def set_name(self, input_name):
print("Called set_name)
self.hidden_name = input_name
name = property(get_name, set_name)
위의 예제에서 마지막 라인은 매개변수로 들어온 두 메서드를 'name'이라는 속성의 property로 정의합니다. property() 전역함수의 첫 번째 인자는 getter 메서드, 두 번째 인자는 setter 메서드입니다. property로 등록을 하면 다음과 같이 접근/설정할 수 있게됩니다.
>>> a = MyObject('HongGilDong')
>>> a.name # () 함수 호출 연산자 없이 property로 호출합니다.
Called get_name
'HongGilDong'
>>> a.name = "HerryPoter" # 등록한 'name' property에 대입 연산자를 통해 값을 설정할 수 있습니다.
Called set_name
'Programming > Python' 카테고리의 다른 글
[Python] 파일 입출력 (0) | 2019.06.11 |
---|---|
[Python] private 네임 맹글링 (0) | 2019.06.10 |
[Python] 클로저(Closure) (0) | 2019.06.07 |
[Python] 컴프리헨션(Comprehension) (0) | 2019.06.07 |
[Python] list, tuple, dictionary, set 자료구조 (0) | 2019.06.05 |
댓글
이 글 공유하기
다른 글
-
[Python] 파일 입출력
[Python] 파일 입출력
2019.06.11 -
[Python] private 네임 맹글링
[Python] private 네임 맹글링
2019.06.10 -
[Python] 클로저(Closure)
[Python] 클로저(Closure)
2019.06.07 -
[Python] 컴프리헨션(Comprehension)
[Python] 컴프리헨션(Comprehension)
2019.06.07