国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python面向?qū)ο箢惖睦^承實(shí)例詳解

Python面向?qū)ο箢惖睦^承實(shí)例詳解

2021-03-10 00:33Bigberg Python

這篇文章主要介紹了Python面向?qū)ο箢惖睦^承,結(jié)合實(shí)例形式詳細(xì)分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的繼承原理、定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python面向?qū)ο?/a>類的繼承。分享給大家供大家參考,具體如下:

一、概述

 

面向?qū)ο缶幊?(OOP) 語(yǔ)言的一個(gè)主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無(wú)需重新編寫原來(lái)的類的情況下對(duì)這些功能進(jìn)行擴(kuò)展。

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

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

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

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

在考慮使用繼承時(shí),有一點(diǎn)需要注意,那就是兩個(gè)類之間的關(guān)系應(yīng)該是“屬于”關(guān)系。例如,Employee 是一個(gè)人,Manager 也是一個(gè)人,因此這兩個(gè)類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因?yàn)橥炔⒉皇且粋€(gè)人。

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

二、類的繼承

 

2.1 繼承的定義

1
2
3
4
5
6
7
8
9
class Person(object):  # 定義一個(gè)父類
  def talk(self):  # 父類中的方法
    print("person is talking....")
class Chinese(Person):  # 定義一個(gè)子類, 繼承Person類
  def walk(self):   # 在子類中定義其自身的方法
    print('is walking...')
c = Chinese()
c.talk()   # 調(diào)用繼承的Person類的方法
c.walk()   # 調(diào)用本身的方法

輸出:

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

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

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

繼承類的構(gòu)造方法:

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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): # 先繼承,在重構(gòu)
    Person.__init__(self, name, age) #繼承父類的構(gòu)造方法,也可以寫成:super(Chinese,self).__init__(name,age)
    self.language = language  # 定義類的本身屬性
  def walk(self):
    print('is walking...')
class American(Person):
  pass
c = Chinese('bigberg', 22, 'Chinese')

如果我們只是簡(jiǎn)單的在子類Chinese中定義一個(gè)構(gòu)造函數(shù),其實(shí)就是在重構(gòu)。這樣子類就不能繼承父類的屬性了。所以我們?cè)诙x子類的構(gòu)造函數(shù)時(shí),要先繼承再構(gòu)造,這樣我們也能獲取父類的屬性了。

子類構(gòu)造函數(shù)基礎(chǔ)父類構(gòu)造函數(shù)過程如下:

實(shí)例化對(duì)象c ----> c 調(diào)用子類__init__()  ---- > 子類__init__()繼承父類__init__()  ----- > 調(diào)用父類 __init__()

2.3 子類對(duì)父類方法的重寫

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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): # 子類 重構(gòu)方法
    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

三、類繼承的事例

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class SchoolMember(object):
  '''學(xué)習(xí)成員基類'''
  member = 0
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
    self.sex = sex
    self.enroll()
  def enroll(self):
    '注冊(cè)'
    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):
  '學(xué)生'
  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]

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

原文鏈接:https://www.cnblogs.com/bigberg/p/7182741.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品一区二区三区樱花 | 中文字幕视频一区 | 欧美成人a∨高清免费观看 亚洲国产精品尤物yw在线观看 | 欧美性猛交一区二区三区精品 | 91中文字幕在线 | 精品久久中文字幕 | 欧美精品在线播放 | 久久se精品一区精品二区 | 精品国产乱码久久久久久久软件 | 四虎影音 | 色播久久 | 欧美三区 | 国产一区二区三区四区在线观看 | 九一精品国产 | 精品视频一区二区三区 | 午夜小视频在线观看 | 亚洲国产中文字幕 | 一级毛片免费版 | 欧美一区二区三区在线视频观看 | 免费观看日韩一级片 | 日本全黄裸体片 | 久久久久久国产精品mv | 成人日韩 | 中文字幕在线观看视频地址二 | 成人a免费| 国产一区www| 亚洲欧美一区二区三区在线 | 国产精品美女久久久av超清 | 欧美日韩免费在线 | 欧美影院| 天堂中文网官网 | 亚洲国产精品yw在线观看 | 午夜天堂精品久久久久 | 亚洲精品国产一区 | 国产一级高清视频 | 日韩在线视频播放 | 精品国产欧美一区二区 | 午夜精品久久久久 | 电影一级毛片 | 伊人草| 人人干在线 |