我正在使用python2.7(googleappengine)
在学习Python
之后,我发现了语言是如何使用继承来实现多态性的。在
INHERITANCE
中基于PYTHON
的多态性:
class pet:
number_of_legs = None
age = None
def sleep(self):
print "zzz"
def count_legs(self):
print "I have %s legs." % self.number_of_legs
return self.number_of_legs
class dog(pet):
def bark(self):
print "woof"
doug = dog()
doug.number_of_legs = 5;
print "Doug has %s legs." % doug.count_legs()
doug.bark()
我的问题是:Python是否具有松散耦合的多态性,即使用interface
而不是{HouseDog
和{
INTERFACE
中基于JAVA
的多态性:
问题:
再说一遍:python是否有一种面向对象的方法来实现多态性而不使用继承?在
是的,他们叫它Duck Typing。不需要正式实现接口。Java风格的接口并不存在,因为Python有多重继承,所以如果您想定义接口,只需使用常规类作为超类型。但一般情况下,尽量避免抽象类和类的创建。在
对于您的例子,可以省略}都有}方法。在多态的情况下,Python只在调用时检查方法是否存在,而不是在编译时(不存在)或加载时检查类型。最大的优势在于,当你的实现还没有完成时,你可以快速地原型化而不必担心形式。在
Pet
接口,但是让HouseDog
和{getNumberOfDresses
和{如果你真的想要正式的类型检查,你可以用很多方法来做,但是没有一个是官方认可的。在
相关问题 更多 >
编程相关推荐