多态代码实现:
class Animal(object):
def __init__(self, name): # Constructor of the class
self.name = name
def talk(self): # Abstract method, defined by convention only
print('the is Animal talk function')
pass #raise NotImplementedError("Subclass must implement abstract method")
# @staticmethod #不写@staticmethod obj 就是self,就不是一个需要传递的参数
def animal_talk(obj):
obj.talk()
class Cat(Animal):
def talk(self):
print('Meow!')
class Dog():
def talk(self):
print('Woof! Woof!')
d = Dog()
#d.talk()
c = Cat("xu")
#c.talk()
#
# def animal_talk(obj):
# obj.talk()
#同一个接口,不同的实现
Animal.animal_talk(c) #调用对象c中的talk()
Animal.animal_talk(d) #调用对象d中的talk()
X = Animal('alex') #X是 Animal类的实例化对象
Z = Animal #Z 是Animal类的内存地址
print(X)
print(Z)
# X.animal_talk(c)
Animal('alex').animal_talk() #调用自己的方法,self 不用写
X.animal_talk() #调用自己的方法,self 不用写
Z.animal_talk(c)
# Animal('alex1').animal_talk(c) #@staticmethod 这行不注释,这行才不报错
面向对象的特性:封装、继承、多态;
多态:
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”;就是同一个方法调用不同对象,结果不一样。
封装:
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承:
一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承;继承可以扩展已存在的代码模块(类);
参考:
https://www.cnblogs.com/alex3714/articles/5188179.html