多态,是指同一个方法调用,由于对象不同可能会产生不同的行为。在现实生活中,有很多例子。同样是吃饭,中国人用筷子英国人用叉子印度人用右手。
注意:
- 多态是方法的多态,属性没有多态。
- 多态的产生有两个必要条件,继承和方法重写。
class person: def eat(self): print("It's time to eat.") class chinese(person): def eat(self): print("中国人吃饭用筷子") class english(person): def eat(self): print("英国人吃饭用刀叉") class india(person): def eat(self): print("印度人吃饭用右手") # 同一个方法调用由于对象不同而产生不同的行为 def person_eat(methods): if isinstance(methods,person): methods.eat() else: print("不能吃饭") person_eat(chinese()) person_eat(india()) person_eat(english())
instance的用法
-
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 与 type() 区别:
-
type() 不会认为子类是一种父类类型,不考虑继承关系。
-
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
isinstance(object, classinfo)
参数:
object -- 实例对象。
classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。
返回值:
如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。
>>>a = 2 >>> isinstance (a,int) True >>> isinstance (a,str) False >>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True True
-