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