Python class类的派生与继承详解
Python 中定义一个类派生自另一个类的语法如下:
class 派生类名(基类名):
<数据成员声明 1>
...
<数据成员声明 N>
基类 BaseClassName 必须与派生类 DerivedClassName 定义在同一个作用域内。如基类来自不同的模块,可以在类名前添加模块名。在定义派生类时可以重写基类的方法。例如:
class Animal: name = "" def Speak(self): pass class Cat(Animal): name = "狗" def Speak(self): print ("喵~喵~喵~") class Human(Animal): name ="人" def Speak(self): print ("你好~") c = Cat() c.Speak() h = Human() h.Speak()上述代码的运行结果如下所示:
>>> class Animal:
... name = ""
... def Speak(self):
... pass
>>> class Cat(Animal):
... name = "狗"
... def Speak(self):
... print ("喵~喵~喵~")
>>> class Human(Animal):
... name ="人"
... def Speak(self):
... print ("你好~")
>>> c = Cat()
>>> c.Speak()
喵~喵~喵~
>>> h = Human()
>>> h.Speak()
你好~
Python 支持有限的多重继承,其语法为:
class 派生类名(基类1, 基类2, ......, 基类N):
<数据成员声明 1>
...
<数据成员声明 N>
需要注意小括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,Python 将按照从左至右的顺序在这些父类中查找该方法。例如:
class Animal: name = "" def Speak(self): pass class Cat(Animal): name = "狗" def Speak(self): print ("喵~喵~喵~") class Human(Animal): name ="人" def Speak(self): print ("你好~") class Actor(Human, Cat): name ="演员" def Speak(self): Human.Speak(self) Cat.Speak(self) a = Actor() a.Speak()以上代码的运行结果如下所示:
>>> class Animal:
... name = ""
... def Speak(self):
... pass
>>> class Cat(Animal):
... name = "狗"
... def Speak(self):
... print ("喵~喵~喵~")
>>> class Human(Animal):
... name ="人"
... def Speak(self):
... print ("你好~")
>>> class Actor(Human, Cat):
... name ="演员"
... def Speak(self):
... Human.Speak(self)
... Cat.Speak(self)
>>> a = Actor()
>>> a.Speak()
你好~
喵~喵~喵~
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算