이 기사는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!