class Animal(object):
#初始化的事情
def __init__(self, name = '动物', color = '白色'):
self.__name = name #私有属性不会被继承
self.__color = color
#结束前做的事情
def __del__(self):
print("---------结束-------")
class Dog(object):
#初始化的事情
def __init__(self, name = '狗', color = '白色'):
self.__name = name
self.__color = color
#结束前做的事情
def __del__(self):
print("---------结束-------")
def printInfo(self):
print("名字是:%s"%self.__name)
print("颜色是:%s"%self.__color)
wangcai = Dog(name = "旺财")
wangcai.printInfo()
del wangcai
运用继承
class Animal(object):
#初始化的事情
def __init__(self, name = '动物', color = '白色'):
self.name = name
self.color = color
#结束前做的事情
def __del__(self):
print("---------结束-------")
class Dog(Animal):
#初始化的事情
#def __init__(self, name = '狗', color = '白色'):
# self.__name = name
# self.__color = color
#结束前做的事情
#def __del__(self):
# print("---------结束-------")
def printInfo(self):
print("名字是:%s"%self.name)
print("颜色是:%s"%self.color)
wangcai = Dog(name = "旺财")
wangcai.printInfo()
del wangcai
调用父类的方法
class Animal(object):
def bark(self):
print("aaaaa.....")
class Cat(Animal):
#在子类中重新编写这个方法,就叫做重写
def bark(self):
#调用父类的方法bark()
Animal.bark(self) #python2就有
super().bark()
print("喵喵.....")
tom = Cat()
tom.bark()
多继承
#多继承
class A(object):
def test(self):
print("------A test------")
class B(object):
def test(self):
print("------B test------")
class C(A, B):
pass
c = C()
c.test()
print(C.__mro__) #查看C类对象搜索方法时的先后顺序
多态
class Animal(object):
def bark(self):
print("啊啊啊啊")
class Cat(Animal):
def bark(self):
print("喵喵")
class Dog(Animal):
def bark(self):
print("汪汪汪")
#多态:调用同一个方法,但是执行的代码或者说现象不一样
class Robot(object):
def bark(self):
print("嗡嗡嗡")
def animalBark(temp):
temp.bark()
maomi = Cat()
wangcai = Dog()
animalBark(maomi)
animalBark(wangcai)
dingdang = Robot()
animalBark(dingdang)