늘 python 의 오리 류 와 다 태 를 말한다

뭐 공부 해요?
<1>한 가지 유형 은 여러 가지 유형의 능력 을 가지 고 있다.
<2>서로 다른 대상 이 같은 소식 에 유연 한 반응 을 할 수 있 도록 합 니 다.
<3>사용 대상 을 일반적인 방식 으로 대하 다.
<4>비 동적 언어 는 반드시 계승 과 인터페이스의 방식 을 통 해 이 루어 져 야 한다.
2.python 의 다 형

<1>        (           )
<2>               

class Animal:
  def move(self):
    print('animal is moving....')
class Dog(Animal):
  pass
def move(obj):
  obj.move()

>>>move(Animal())
>>>animal is moving....
>>>move(Dog())
>>>animal is moving....

class Fish(Animal):
  def move(self):
    print('fish is moving....')
>>>move(Fish())
>>>fish is moving....

3.동적 언어 와 오리 유형
<1>변수 바 인 딩 의 유형 은 불확실 합 니 다.
<2>함수 와 방법 은 모든 종류의 인 자 를 받 을 수 있 습 니 다.
<3>호출 방법 시 제 공 된 매개 변수 종 류 를 검사 하지 않 습 니 다.
<4>호출 이 성공 적 으로 매개 변수 가 있 는 방법 과 속성 이 확인 되 었 는 지,호출 이 성공 하지 않 으 면 오 류 를 던 집 니 다.
<5>인터페이스 구현 필요 없 음

class P:
  def __init__(self, x, y):
    self.x = x
    self.y = y
  def __add__(self, oth):
    return P(self.x+oth.x, self.y+oth.y)
  def info(self):
    print(self.x, self.y)
class D(P):
  def __init__(self, x, y, z):
    super.__init__(x, y)
    self.z = z

  def __add__(self, oth):
    return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
  def info(self):
    print(self.x, self.y, self.z)

class F:
  def __init__(self, x, y, z):
    self.x = x
    self.y = y
    self.z = z

  def __add__(self, oth):
    return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
  
  def info(self):
    print(self.x, self.y, self.z)
  

def add(a, b):
  return a + b

if __name__ == '__main__':
  add(p(1, 2), p(3, 4).info())
  add(D(1, 2, 3), D(1, 2, 3).info())
  add(F(2, 3, 4), D(2, 3, 4).info())
4.다 태 적 장점
<1>열 린 확장 과 수정 을 실현 할 수 있 는 폐쇄
<2>python 프로그램 을 더욱 유연 하 게 합 니 다.
이상 의 이 상투적인 이야기 python 의 오리 류 와 다 태 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 우 리 를 많이 지지 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기