如果类中不定义__init__,调用父类superclass的__init__
如果类中继承父类也需要定义自己的__init__,就需要在当前类的__init__中调用父类的__init__
如何调用父类__init__:
super().init(参数)
super(类名,对象名).init(参数)
如果父类中有eat(),子类也定义一个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):
pass
class Employee(Person):
pass
class Doctor(Person):
pass
s = Student('qq',19)
s.run()
输出:
qq正在跑步
没有参数的时候,使用super关键字:
class Person:
def __init__(self):
self.name = 'ww'
self.age = 18
def eat(self):
print(self.name + '正在吃法')
def run(self):
print(self.name + '正在跑步')
class Student(Person):
def __init__(self): # 需要调用父类的init
super().__init__()# super关键字,表示调用父类的关键字
print('----student init')
pass
class Employee(Person):
pass
class Doctor(Person):
pass
s = Student()
s.run()
输出:
----student init
ww正在跑步
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): # 需要调用父类的init
super().__init__(name,age)# super关键字,表示调用父类的关键字
print('----student init')
pass
class Employee(Person):
pass
class Doctor(Person):
pass
s = Student('ff',12)
s.run()
输出:
----student init
ff正在跑步
有参数的时候i,使用super关键字:
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): # 需要调用父类的init
super().__init__(name,age)# super关键字,表示调用父类的关键字
print('----student init')
pass
class Employee(Person):
pass
class Doctor(Person):
pass
s = Student('ff',12)
s.run()
输出:
```python
----student init
ff正在跑步
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): # 需要调用父类的init
super().__init__(name,age)# super关键字,表示调用父类的关键字
print('----student init')
def study(self,cource):
print('{}正在学习{}课程'.format(self.name,cource))
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):
pass
s = Student('ff',12)
s.run()
s.study('python基础')
s.eat()# 父类中也有一个eat,但是会调用类本身的方法。
e = Employee('tom',23,10000,'king')
e.run()
输出:
----student init
ff正在跑步
ff正在学习python基础课程
ff正在吃饭
tom正在跑步
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): # 需要调用父类的init
super().__init__(name,age)# super关键字,表示调用父类的关键字
print('----student init')
def study(self,cource):
print('{}正在学习{}课程'.format(self.name,cource))
def eat(self,food):
super().eat()#先调用父类的方法。
print(self.name + food)
class Employee(Person):
def __init__(self,name,age,salary,manager):
super().__init__(name,age)
self.salary = salary
self.manager = manager
class Doctor(Person):
pass
s = Student('ff',12)
s.run()
s.study('python基础')
s.eat('rice')# 父类中也有一个eat,但是会调用类本身的方法。
e = Employee('tom',23,10000,'king')
e.run()
输出:
----student init
ff正在跑步
ff正在学习python基础课程
ff正在吃法
ffrice
tom正在跑步