Notice
Recent Posts
Recent Comments
Link
nathan_H
python class - duck typing 본문
python의 특징중 하나는
다형성을 느슨하게 구현했다.
이것은 클래스에 상관없이 같은 동작을
다른 객체에 적용할 수 있다는 것을 의미한다.
class Char():
def __init__(self, name):
self.name = name
self.power = 15
self.level = 1
def says(self):
return f"i am {self.name}!"
def status(self):
return f"power: {self.power} level: {self.level}"
class CharChange(Char):
def say(self):
return f"i am {self.name}!"
def status(self, power):
self.power = power
return f"power: {self.power} level: {self.level}"
def who_char(char):
print(char.says())
if __name__ == "__main__":
ch1 = Char("zilet")
ch2 = Char("mutal")
print(ch1.says()+ " and " + ch2.says())
print(ch1.status(), ch2.status())
ch1 = CharChange("marine")
ch2 = CharChange("zerg")
print(ch1.says()+ " and " + ch2.says())
print(ch1.status(12), ch2.status(15))
who_char(ch1)
출력문
i am zilet! and i am mutal!
power: 15 level: 1 power: 15 level: 1
i am marine! and i am zerg!
power: 12 level: 1 power: 15 level: 1
i am marine!
CharChange 클래스에는
초기화를 해주지 않았다.
그러므로 __init__() method를 오버라이드 하지않아
부모 클래스인 Char의 __init__() 메서드를
호출해 객체의 name, level, power에 접근할 수 있다.
그리고 who_char에서도 인자를 객체로 받아
바로 객체의 method을 호출해 출력 해줄 수 있다.
이러한 행위들은
파이썬에서 duck typing 이라고 부른다.
즉 오리처럼 꽥꽤거리고 걷는다면, 그것은 오리다.
'Programming Laguage > Python' 카테고리의 다른 글
python - Module (0) | 2019.05.01 |
---|---|
python - namedtuple (0) | 2019.04.30 |
python - class method type. (0) | 2019.04.30 |
python - function 과 method (0) | 2019.04.30 |
python - namespace (0) | 2019.04.26 |
Comments