欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python面向對象類的繼承實例詳解

 更新時間:2018年06月27日 11:32:55   作者:Bigberg  
這篇文章主要介紹了Python面向對象類的繼承,結合實例形式詳細分析了Python面向對象程序設計中類的繼承原理、定義、使用方法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了Python面向對象類的繼承。分享給大家供大家參考,具體如下:

一、概述

面向對象編程 (OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。

通過繼承創(chuàng)建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”,繼承的過程,就是從一般到特殊的過程。在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現(xiàn)多重繼承,可以通過多級繼承來實現(xiàn)。

繼承概念的實現(xiàn)方式主要有2類:實現(xiàn)繼承、接口繼承。

實現(xiàn)繼承是指使用基類的屬性和方法而無需額外編碼的能力。

接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現(xiàn)的能力(子類重構爹類方法)。

在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關系應該是“屬于”關系。例如,Employee 是一個人,Manager 也是一個人,因此這兩個類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因為腿并不是一個人。

OO開發(fā)范式大致為:劃分對象→抽象類→將類組織成為層次化結構(繼承和合成) →用類與實例進行設計和實現(xiàn)幾個階段。

二、類的繼承

2.1 繼承的定義

class Person(object):  # 定義一個父類
  def talk(self):  # 父類中的方法
    print("person is talking....")
class Chinese(Person):  # 定義一個子類, 繼承Person類
  def walk(self):   # 在子類中定義其自身的方法
    print('is walking...')
c = Chinese()
c.talk()   # 調用繼承的Person類的方法
c.walk()   # 調用本身的方法

輸出:

person is talking....
is walking...

2.2 構造函數(shù)的繼承

如果我們要給實例 c 傳參,我們就要使用到構造函數(shù),那么構造函數(shù)該如何繼承,同時子類中又如何定義自己的屬性?

繼承類的構造方法:

1.經(jīng)典類的寫法: 父類名稱.__init__(self,參數(shù)1,參數(shù)2,...)

2. 新式類的寫法:super(子類,self).__init__(參數(shù)1,參數(shù)2,....)

class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
    self.weight = 'weight'
  def talk(self):
    print("person is talking....")
class Chinese(Person):
  def __init__(self, name, age, language): # 先繼承,在重構
    Person.__init__(self, name, age) #繼承父類的構造方法,也可以寫成:super(Chinese,self).__init__(name,age)
    self.language = language  # 定義類的本身屬性
  def walk(self):
    print('is walking...')
class American(Person):
  pass
c = Chinese('bigberg', 22, 'Chinese')

如果我們只是簡單的在子類Chinese中定義一個構造函數(shù),其實就是在重構。這樣子類就不能繼承父類的屬性了。所以我們在定義子類的構造函數(shù)時,要先繼承再構造,這樣我們也能獲取父類的屬性了。

子類構造函數(shù)基礎父類構造函數(shù)過程如下:

實例化對象c ----> c 調用子類__init__()  ---- > 子類__init__()繼承父類__init__()  ----- > 調用父類 __init__()

2.3 子類對父類方法的重寫

如果我們對基類/父類的方法需要修改,可以在子類中重構該方法。如下的talk()方法

class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
    self.weight = 'weight'
  def talk(self):
    print("person is talking....")
class Chinese(Person):
  def __init__(self, name, age, language):
    Person.__init__(self, name, age)
    self.language = language
    print(self.name, self.age, self.weight, self.language)
  def talk(self): # 子類 重構方法
    print('%s is speaking chinese' % self.name)
  def walk(self):
    print('is walking...')
c = Chinese('bigberg', 22, 'Chinese')
c.talk()

輸出:

bigberg 22 weight Chinese
bigberg is speaking chinese

三、類繼承的事例

class SchoolMember(object):
  '''學習成員基類'''
  member = 0
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex
    self.enroll()
  def enroll(self):
    '注冊'
    print('just enrolled a new school member [%s].' % self.name)
    SchoolMember.member += 1
  def tell(self):
    print('----%s----' % self.name)
    for k, v in self.__dict__.items():
      print(k, v)
    print('----end-----')
  def __del__(self):
    print('開除了[%s]' % self.name)
    SchoolMember.member -= 1
class Teacher(SchoolMember):
  '教師'
  def __init__(self, name, age, sex, salary, course):
    SchoolMember.__init__(self, name, age, sex)
    self.salary = salary
    self.course = course
  def teaching(self):
    print('Teacher [%s] is teaching [%s]' % (self.name, self.course))
class Student(SchoolMember):
  '學生'
  def __init__(self, name, age, sex, course, tuition):
    SchoolMember.__init__(self, name, age, sex)
    self.course = course
    self.tuition = tuition
    self.amount = 0
  def pay_tuition(self, amount):
    print('student [%s] has just paied [%s]' % (self.name, amount))
    self.amount += amount
t1 = Teacher('Wusir', 28, 'M', 3000, 'python')
t1.tell()
s1 = Student('haitao', 38, 'M', 'python', 30000)
s1.tell()
s2 = Student('lichuang', 12, 'M', 'python', 11000)
print(SchoolMember.member)
del s2
print(SchoolMember.member)

輸出:

----end-----
just enrolled a new school member [haitao].
----haitao----
age 38
sex M
name haitao
amount 0
course python
tuition 30000
----end-----
just enrolled a new school member [lichuang].
3
開除了[lichuang]
2
開除了[Wusir]
開除了[haitao]

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python生成器表達式和列表解析

    python生成器表達式和列表解析

    最近在學習python的過程中,對列表解析及生成器表達式有點疑惑。從表面上看,兩者很相似,只有一點不同:列表解析采用中括號[]來包含,生成器表達式采用小括號()來包含。本文我們就來詳細看下python生成器表達式和列表解析
    2016-03-03
  • python調用文字識別OCR輕松搞定驗證碼

    python調用文字識別OCR輕松搞定驗證碼

    本文主要介紹了python調用文字識別OCR輕松搞定驗證碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python獲取接口請求耗時的方法詳解

    Python獲取接口請求耗時的方法詳解

    你想知道我們請求一個url的時候,握手和請求資源分別占用多長時間么?今天我們就來使用python寫個小案例來看看,感興趣的可以跟隨小編一起了解一下
    2023-04-04
  • 學習python可以干什么

    學習python可以干什么

    在本文里我們給大家分享了關于學習python的前途以及告訴大家可以做什么,正在學習PYTHON的朋友們學習下。
    2019-02-02
  • 國產(chǎn)化設備鯤鵬CentOS7上源碼安裝Python3.7的過程詳解

    國產(chǎn)化設備鯤鵬CentOS7上源碼安裝Python3.7的過程詳解

    這篇文章主要介紹了國產(chǎn)化設備鯤鵬CentOS7上源碼安裝Python3.7,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 關于Python中request發(fā)送post請求傳遞json參數(shù)的問題

    關于Python中request發(fā)送post請求傳遞json參數(shù)的問題

    這篇文章主要介紹了Python中request發(fā)送post請求傳遞json參數(shù)的問題,在Python中需要傳遞dict參數(shù),利用json.dumps將dict轉為json格式用post方法發(fā)起請求,感興趣的朋友跟隨小編一起看看吧
    2022-08-08
  • Flask 使用工廠模式

    Flask 使用工廠模式

    本文章向大家介紹flask工廠模式,主要包括flask工廠模式使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下

    2021-11-11
  • 深入了解python的函數(shù)參數(shù)

    深入了解python的函數(shù)參數(shù)

    這篇文章主要為大家介紹了python的函數(shù)參數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python實現(xiàn)Harbor私有鏡像倉庫垃圾自動化清理詳情

    Python實現(xiàn)Harbor私有鏡像倉庫垃圾自動化清理詳情

    這篇文章主要介紹了Python實現(xiàn)Harbor私有鏡像倉庫垃圾自動化清理詳情,文章圍繞主題分享相關詳細代碼,需要的小伙伴可以參考一下
    2022-05-05
  • Python實現(xiàn)一個簡單的遞歸下降分析器

    Python實現(xiàn)一個簡單的遞歸下降分析器

    這篇文章主要介紹了Python如何實現(xiàn)一個簡單的遞歸下降分析器,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08

最新評論