>백엔드 개발 >파이썬 튜토리얼 >Python의 다형성 분석 예(세부 사항)

Python의 다형성 분석 예(세부 사항)

不言
不言원래의
2018-09-20 16:01:403799검색

이 기사는 Python의 다형성에 대한 예제 분석(자세한)을 제공합니다. 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

class Human(object):  # 父类 :创建“人”类

    def __init__(self):

           print('Ill pound the code and buy you a bag')  # 我会敲打码,给你买包包

class Man(Human):  # 1)子类1 创建“男人”类

    def __init__(self):

           print('In hs, we should have the knowledge to drink wine.The President up, the kitchen down')  # 在衡水,要文武双全,有知识,会喝酒;上的总裁,下的厨房

class Woman(Human):# 2)子类2 创建“女人”类

    def __init__(self):

           print('If a man loves me, I dont care if he has a house or a car.Woman?Do you believe a')  # 如果男人爱我,我不会在意他有没有房子车子。呵呵女人啊?你信了那只能说明你太天真了。

print('human:')

h = Human()

print('man:')

m = Man()

print('woman:')

w = Woman()  # 分别对 人类、男人类、女人类创建一个变量h、m、w

print(isinstance(h,Human))#isinstance举例

print(isinstance(m,Man))

print(isinstance(m,Human))  #  分别判断h是人类吗、m是男人类吗、m是人类吗,输出结果全部为是。

#输出结果是:
# human:
# Ill pound the code and buy you a bag
# man:
# In hs, we should have the knowledge to drink wine.The President up, the kitchen down
# woman:
# If a man loves me, I dont care if he has a house or a     
     car.Woman?Do you believe a
# True
# True
# True

이것은 변수의 다형성입니다. 또한 m이 __init__ 메서드를 호출하면 출력 내용이 Human의 __init__과 다릅니다.

Duck Typing:

덕 타이핑(Duck Typing)은 동적 타이핑(Dynamic Typing) 스타일입니다. 이 스타일에서 객체의 효과적인 의미는 특정 클래스에서 상속하거나 특정 인터페이스를 구현하는 것이 아니라 "현재 메서드 및 속성 집합"에 의해 결정됩니다. 이 개념의 이름은 James Whitcomb Riley가 제안한 오리 테스트에서 유래되었습니다. "오리 테스트"는 다음과 같이 표현될 수 있습니다.

"새가 오리처럼 걷고, 오리처럼 헤엄치고, 오리처럼 꽥꽥거리는 모습을 보면 , 그렇다면 이것은 새를 오리라고 부를 수 있습니다.”

오리 타이핑에서는 물체 자체의 유형이 아니라 그것이 어떻게 사용되는지에 중점을 둡니다. 예를 들어, 오리 타이핑을 사용하지 않는 언어에서는 "duck" 유형의 객체를 취하고 "walk" 및 "quack" 메소드를 호출하는 함수를 작성할 수 있습니다. 덕 타이핑을 사용하는 언어에서 이러한 함수는 모든 유형의 객체를 허용하고 "walk" 및 "call" 메서드를 호출할 수 있습니다. 호출해야 하는 메서드가 존재하지 않으면 런타임 오류가 발생합니다. 올바른 "walk" 및 "call" 메소드를 사용하는 모든 객체의 이러한 동작은 함수에 의해 허용될 수 있으며 위의 명령문으로 이어지며 이러한 유형 결정 방법이 명명됩니다.

Duck 타이핑은 메소드와 함수의 인수 유형을 테스트하지 않고 문서화, 명확한 코드 및 테스트에 의존하여 올바른 사용법을 확인함으로써 이점을 얻을 수 있는 경우가 많습니다.

요약하자면: 덕 타이핑은 자신에게 속하지 않은 메서드(다른 함수의 메서드)를 사용하는 것을 의미합니다. 자신의 함수는 인스턴스화 후에 그 성격을 변경합니다

위 내용은 Python의 다형성 분석 예(세부 사항)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.