Home  >  Article  >  Backend Development  >  Single inheritance and multiple inheritance in Python

Single inheritance and multiple inheritance in Python

不言
不言Original
2018-06-04 17:44:082448browse

This article mainly introduces single inheritance and multiple inheritance in Python, and combines examples with a detailed analysis of the concepts, principles, implementation methods and related operation precautions of single inheritance and multiple inheritance in Python object-oriented programming. Friends in need You can refer to the following

The examples in this article describe single inheritance and multiple inheritance in Python. Share it with everyone for your reference, the details are as follows:

Single inheritance

## 1. Introduction

Python also supports class inheritance. If a language does not support inheritance, classes have little meaning. The definition of a derived class is as follows:

class DerivedClassName(BaseClassName1):
  <statement-1>
  .
  .
  .
  <statement-N>

You need to pay attention to the order of the base class in the parentheses. If there are the same method names in the base class, and in the subclass When the class is used, it is not specified. Python searches from left to right, that is, when the method is not found in the subclass, it searches from left to right to see if the method is included in the base class.

BaseClassName (the base class name in the example) must be defined in the same scope as the derived class.

In addition to classes, you can also use expressions, which is very useful when the base class is defined in another module:

class DerivedClassName(modname.BaseClassName):

2. Code

# -*- coding:utf-8 -*-
#! python3
class people:
  #定义基本属性
  name =&#39;&#39;
  age =0
  #定义私有属性,私有属性在类外部无法直接进行访问
  __weight =0
  #定义构造方法
  def __init__(self,n,a,w):
    self.name = n
    self.age = a
    self.__weight = w
  def speak(self):
    print("%s 说: 我 %d 岁。"%(self.name,self.age))
    #单继承示例
class student(people):
  grade =&#39;&#39;
  def __init__(self,n,a,w,g):
    #调用父类的构造函数,下面两种方式都可以
    #people.__init__(self,n,a,w)
    super().__init__(n,a,w)
    self.grade = g
    #覆写父类的方法
  def speak(self):
    print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
s = student(&#39;ken&#39;,10,60,3)
s.speak()

3. Running result

ken said: I 10 I'm 3 years old and I'm in grade 3

##Multiple inheritance## 1. Introduction

Python also has limited support for multiple inheritance forms. The class definition of multiple inheritance looks like the following example:

class DerivedClassName(Base1, Base2, Base3):
  <statement-1>
  .
  .
  .
  <statement-N>

You need to pay attention to the order of the parent class in the parentheses. If there are the same method names in the parent class, and in When the subclass is used, it is not specified. Python searches from left to right, that is, when the method is not found in the subclass, it searches from left to right to see if the method is included in the parent class.

2. Code

# -*- coding:utf-8 -*-
#! python3
#类定义
class people:
  #定义基本属性
  name =&#39;&#39;
  age =0
  #定义私有属性,私有属性在类外部无法直接进行访问
  __weight =0
  #定义构造方法
  def __init__(self,n,a,w):
    self.name = n
    self.age = a
    self.__weight = w
  def speak(self):
    print("%s 说: 我 %d 岁。"%(self.name,self.age))
#单继承示例
class student(people):
  grade =&#39;&#39;
  def __init__(self,n,a,w,g):
    #调用父类的构函
    people.__init__(self,n,a,w)
    self.grade = g
  #覆写父类的方法
  def speak(self):
    print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
#另一个类,多重继承之前的准备
class speaker():
  topic =&#39;&#39;
  name =&#39;&#39;
  def __init__(self,n,t):
    self.name = n
    self.topic = t
  def speak(self):
    print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
#多重继承
class sample(speaker,student):
  a =&#39;&#39;
  def __init__(self,n,a,w,g,t):
    student.__init__(self,n,a,w,g)
    speaker.__init__(self,n,t)
test = sample("Tim",25,80,4,"Python")
test.speak()#方法名同,默认调用的是在括号中排前地父类的方法

##3. Running results

我叫 Tim,我是一个演说家,我演讲的主题是 Python

The above is the detailed content of Single inheritance and multiple inheritance in Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn