继承
语法:class DerivedClassName(BaseClassName): 在括号里加上父类的名字。
被继承的类叫基类、父类或超类。而继承者称为子类,子类可以继承父类的所有属性和方法。
>>> class Parent:
def hello(self):
print('正在调用父类....')
>>> class Child(Parent):
pass
>>> p = Parent()
>>> p.hello()
正在调用父类....
>>> c = Child()
>>> c.hello()
正在调用父类....
>>>
如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性。
>>> class Child(Parent):
def hello(self):
print('正在调用子类方法')
>>> c = Child()
>>> c.hello()
正在调用子类方法
>>> p = Parent()
>>> p.hello()
正在调用父类....
>>>
—调用未绑定的父类方法
import random as r
class Fish:
def __init__(self):
self.x = r.randint(0,10)
self.y = r.randint(0,10)
def move(self):
self.x -=1
print('我的位置是:',self.x,self.y)
class Goldfish(Fish):
pass
class Carp(Fish):
pass
class Salmon(Fish):
pass
class Shark(Fish):
def __init__(self):
Fish.__init__(self)
self.hungry = True
def eat(self):
if self.hungry:
print('eating......')
self.hungry = False
else:
print('吃太多了....')
—使用super函数
直接使用super(),也不用self参数
import random as r
class Fish:
def __init__(self):
self.x = r.randint(0,10)
self.y = r.randint(0,10)
def move(self):
self.x -=1
print('我的位置是:',self.x,self.y)
class Goldfish(Fish):
pass
class Carp(Fish):
pass
class Salmon(Fish):
pass
class Shark(Fish):
def __init__(self):
super().__init__()
self.hungry = True
def eat(self):
if self.hungry:
print('eating......')
self.hungry = False
else:
print('吃太多了....')
多重继承
class DerivedClassName(Base1, Base2, Base3):
>>> class Base1:
def fool1(self):
print('Base1......')
>>> class Base2:
def fool2(self):
print('Base2......')
>>> class C(Base1 ,Base2):
pass
>>> c = C()
>>> c.fool1()
Base1......
>>> c.fool2()
Base2......
>>>
多重继承,很容易导致代码混乱。