标签:int 操作 并且 object 检查 class list tom pre
1、什么是鸭子类型
“当看到一只鸟走起来像鸭子,游泳起来像鸭子,叫起来也像鸭子,那么这只鸟就可以被称为鸭子”。即如果其他类实现了一个类A的所有方法,那么其他类也可以看作是A类,在使用A类的地方同样可以使用实现了A类所有方法的其他类
2、实例
class Duck(): def walk(self): print(‘I walk like a duck‘) def swim(self): print(‘i swim like a duck‘) class Dog(): def walk(self): print(‘this one walk like a duck‘) def swim(self): print(‘this man swim like a duck‘) def test(duck): duck.walk() duck.swim() duck = Duck() test(duck) dog = Dog() test(dog) ‘‘‘ I walk like a duck i swim like a duck this one walk like a duck this man swim like a duck ‘‘‘
Dog类拥有和Duck类一样的walk和swim方法,那么当一个函数需要传入Duck类,并且用到Duck类的walk和swim方法,那么传入Dog类,也一样是可以运行的,函数并不会检查对象的类型是不是Duck类,只要它拥有walk和swim方法,就可以被正确调用
class Company(object): def __init__(self,employee_list): self.employee = employee_list def __getitem__(self,item): return self.employee[item] company = Company(["tom","bob","jane"]) for em in company: print(em)
Company类实现了迭代相关的__getitem__魔法函数,Company类对应的对象company就可以当成一个迭代对象进行遍历
若Company类实现了集合、序列相关的魔法函数,那么它对应的对象同样可以当成一个集合、序列来操作
标签:int 操作 并且 object 检查 class list tom pre
原文地址:https://www.cnblogs.com/slfh/p/10786108.html