import random
class Road():
def __init__(self,name, len):
self.name = name
self.len = len
class Car():
def __init__(self,brand, speed):
self.brand = brand
self.speed = speed
def get_time(self,road):
ran_time = random.randint(1,10)
msg = '{}品牌的车在{}上以{}速度行驶{}小时。'.format(self.brand,road.name,self.speed,ran_time)
print(msg)
def __str__(self):
return '{}品牌的,速度:{}'.format(self.brand,self.speed)
r1 =Road('京藏高度',1200)
c1 = Car('奥迪',100)
print(c1)
c1.get_time(r1)
奥迪品牌的,速度:100
奥迪品牌的车在京藏高度上以100速度行驶6小时。
is a
'''
继承:
student,employee,doctor都属于person类
具有相同的属性,相同的代码存在冗余,可读性不高
提取相同的代码,子类继承父类
class 子类名(父类名):
特点:
1、如果类中不定义__init__,调用父类 super class 的__init__
2、如果类继承父类也需要定义自己的__init___,就需要在当前类的__init__调用父类的__init__,super().__init__()
3、如何调用父类的__init__:
super().__init__(参数)
super(类名,对象).__init__(参数)
4、如果父类有某个方法,子类也定义一个同样的方法,则只读取子类的方法。默认搜索原则:先找当前子类,再找父类。
5、当父类的方法不满足需求时,在子类中定义一个同名的方法,如果还想在父类方法基础上增加方法,则继承父类的方法,如:super().eat()
子类方法,调用父类的方法。
'''
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
def eat(self):
print(self.name + '正在吃饭。。。')
def run(self):
print(self.name + '正在跑步。。。')
class Student(Person):
def __init__(self,name,age,clazz):
print('===student=init====')
super().__init__(name,age)
self.clazz = clazz
def study(self,course):
print('{}正在学习{}课程。'.format(self.name,course))
def eat(self):
print(self.name + '正在吃饭,喜欢吃肉')
class Employee(Person):
def __init__(self,name,age,salary,manager):
super().__init__(name,age)
self.salary = salary
self.manager = manager
class Doctor(Person):
def __init__(self,name,age,patient):
super().__init__(name,age)
self.patient = patient
s = Student('xiaoming',17,'python1901')
s.run()
s.study('Python基础')
s.eat()
e = Employee('xiaolv',18,10000,'boss1')
e.run()
list1 = ['zhang','li','wang']
d = Doctor('xiaohuang',27,list1)
d.run()