self用法总结
静态语言和动态语言
对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,
否则,将无法调用run()方法。
对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了:
### 演示继承和多态
class Animal(object):
def run(self):
print('this animal is running,it\'s %s'%(self))
class Dog(Animal):
def run(self):
print('Dog is running')
def eat(self):
print('Dog is eating')
pass
class Cat(Animal):
def run(self):
print('Cat is running')
def eat(self):
print('Cat is eating')
pass
dog = Dog()
dog.run()
cat = Cat()
cat.run()
class Timer(object):
def run(self):
print('Start...')
# 对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,
# 否则,将无法调用run()方法。
#
# 对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了:
def run_twice(animal):
animal.run()
animal.run()
run_twice(Dog())
run_twice(Cat())
run_twice(Timer())
Dog is running
Cat is running
Dog is running
Dog is running
Cat is running
Cat is running
Start...
Start...
本文通过实例演示了Python的继承与多态特性,解释了动态语言如何灵活地处理对象类型,只要对象具备所需方法即可。同时,文章涵盖了Python中特性(property)、静态方法、类方法及__str__的使用技巧。
1404

被折叠的 条评论
为什么被折叠?



