单继承
class Person(object):
# object 不写的话默认继承object,所以()可不填
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
print("我的姓名是{0},年龄{1}".format(self.name, self.age))
# 定义子类 继承 Person 类
class Student(Person):
def __init__(self, name, age, score):
# 继承父类Person的 name age
super().__init__(name, age)
self.score = score
多继承
class A(object):
pass
class B(object):
pass
# 同时继承A和B
class C(A, B):
pass
重写
如果父类中某一方法功能太少,可以在子类中重写该方法
调用父类中的方法:super().父类方法名()
class Person():
# object 不写的话默认继承object,所以()可不填
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
print("我的姓名是{0},年龄{1}".format(self.name, self.age))
# 定义子类
class Student(Person):
def __init__(self, name, age, score):
# 继承父类Person的 name age
super().__init__(name, age)
self.score = score
# 重写父类的info()方法
def info(self):
# 先调用父类的info()方法
super().info()
print("得分:",self.score)
sut1 = Student('lee', 18, 98)
sut1.info()
object类:
- object 类 是所有类的父类,因此所有类都有 object 类的方法和属性
- 内置函数 dir() 可以查看指定对象的所有属性
- object 类 有一个 __ str__ 方法 用于返回对该对象的描述,对应内置 函数 str() 经常用到的 print() 方法,帮我们查看对象的信息
所以我们经常重写 __ str__
多态:
多态就是多种形态,即使不知道一个变量引用的对象是什么类型,任然可以通过这个变量调用这个方法,
在运行的过程中,根据变量所引用的对象的类型,动态的调用哪个对象中的方法。
人话:多个类中写了同样的方法名,只能功能不同。
即一个接口,多种实现
class Person():
def play(self):
print("hello world")
class Poor(Person):
# 重写父类的play
def play(self):
print("穷玩车")
class Rich(Person):
def play(self):
print("富玩biao")
class Diaosi():
# 我就不继承了
def play(self):
print("屌丝玩电脑")
# 定义一个函数,同一接口,不同实现
def func(obj):
obj.play()
p1 = Poor()
p2 = Rich()
p3 = Diaosi()
func(p1)
func(p2)
func(p3)