面向对象继承
生活中,继承了什么?物质财产等等..
生活中可以继承–公开的、
不能继承–物体独有的![私有的!]
不能继承–创建、初始化[不能继承的!]
继承:到底发生了什么事情?影响了那些事情?
儿子-> 直接使用父亲的各种继承下来的资源
儿子-> 即使什么东西都没有,拥有所有继承的资源-资源的复用!
class Pet:
'''宠物类型'''
def __init__(self, nickname, age, gender):
self.nickname = nickname
self.age = age
self.gender = gender
class Cat(Pet):
'''宠物猫类型'''
pass
class Dog(Pet):
'''宠物狗类型'''
pass
# 继承的体现:子类可以使用父类的所有公开属性和方法
cat = Cat("tom", 18, "男")
print(cat.nickname, cat.age, cat.gender)
cat.nickname = "汤姆"
print(cat.nickname, cat.age, cat.gender)
# 查看某个类型的父类或者所有父类
print(Cat.__base__)
print(Cat.__bases__)
# 查看某个类型的所有子类
print(Pet.__subclasses__())
# 查看当前对象的类型
print(type(cat))
print(cat.__class__)
子类调用父类的属性、方法
class God:
def __init__(self, name):
self.name = name
def shi_zi_hou(self):
print("天神在狮子吼....")
class Zhishen(God):
def __init__(self, name, age):
#调用父类初始化函数~初始化父类数据
# God.__init__(self, name) # 类型调用属性
super(Zhishen, self).__init__(name) # 对象调用属性
# super().__init__(name)
self.age = age
def shi_zi_hou(self):
print("智深在拔树....")
#super().shi_zi_hou() #调用父类方法, 打印>>>天神在狮子吼....
zhishen = Zhishen("鲁智深", 28)
print(zhishen.name, zhishen.age)
zhishen.shi_zi_hou()