python基礎 類的相關概念及操作

2022-09-17 21:00:21 字數 3523 閱讀 3528

一、類的基本概念

class dog():

def __init__(self,name,age):

self.name=name

self.age=age

def sit(self):

print(self.name.title()+' is now

sitting.')

def roll_over(self):

print(self.name.title()+' rolled

over!')

my_dog=dog('willie',6)  #建立例項,在這裡我們一般用命名約定:通常認為首字母大寫的名稱(比如這裡的dog)指的是類,而小寫的名稱(比如my_dog)指的是類建立的例項

my_dog.sit()  #通過例項呼叫dog中的sit()方法

my_dog.roll_over()  #通過例項呼叫dog中的roll_over()方法

1.在python中,首字母大寫的名稱指的是類。

2.方法__init__()

類中的函式稱作方法。

__init__()是乙個特殊的方法,每當根據類建立新例項時,python都會自動執行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免python預設方法與普通方法發生名稱衝突。

在上面的例子中,我們將__init__()方法定義成了包含三個形參:self、name和age。在這個方法的定義中,形參self必不可少,還必須位於其他形參前面。

為何在方法定義中包含形參self 呢。因為python呼叫這個__init__()方法來建立dog例項時,將自動傳入實參self 。每個與類相關聯的方法呼叫都會自動傳遞引數self ,它是乙個指向例項本身的引用,讓例項能夠訪問類中的屬性和方法。

我們建立dog例項時,python將呼叫dog類的方法__init__()。我們將通過實參向dog()傳遞名字和年齡;self 會自動傳遞。

3.類中的每個屬性都必須有預設值,哪怕這個值是0或者空字串。

二、繼承

1.子類的方法__init__

class car():

"""一次模擬汽車的簡單嘗試"""

def __init__(self,make,model,year):

self.make=make

self.model=model

self.year=year

def get_descriptive_name(self):

"""返回整潔的描述性資訊"""

long_name=str(self.year)+' '+self.make+' '+self.model

return long_name.title()

"""定義電動汽車繼承汽車類"""

class electricar(car):

def __init__(self,make,model,year):

"""初始化父類的屬性"""

super().__init__(make,model,year)

my_tesla=electricar('tesla','models',2016)

"""呼叫父類的方法"""

print(my_tesla.get_descriptive_name())

(1)建立子類的例項時,python首先需要完成的任務是給父類的所有屬性賦值。

(2)建立子類時,父類必須包含在當前檔案中,且位於子類前面。如上**,我們定義了子類electricar。定義子類時,必須在括號內指定父類的名稱。

(3)super()是乙個特殊的函式,幫助python將父類和子類關聯起來。這行**讓python呼叫electricar的父類的方法__init__(),讓electricar例項包含父類的所有屬性。父類也成為超類(superclass),名稱super因此而得名。

2.重寫父類的方法

對於父類的方法,只要它不符合子類模擬的實物的行為,都可對其進行重寫。為此,可在子類中定義這樣乙個方法,即它要與重寫的父類方法同名。這樣,python將不會考慮這個父類方法,而只關注你在子類中定義的相應方法。

3.將例項用作屬性

使用**模擬實物時,你可能會發現自己給類新增的細節越來越多:屬性和方法的清單以及檔案都越來越長。在這種情況下,可能需要將類的一部分作為乙個獨立的類提取出來。

例如,不斷給electricar 類新增細節時,我們可能會發現其中包含很多專門針對汽車電瓶的屬性和方法。在這種情況下,我們可將和諧屬性和方法提取出來,放到另乙個名為battery的類中,並將battery例項用作electricar類的乙個屬性:

class battery():

def __init__(self,battery_size=70):

self.battery_size=battery_size

def describe_battery(self):

"""列印出一條電瓶容量的訊息"""

print("this car has a"+str(self.battery_size)+"-kwh batery.")

接著在electricar類中定義乙個battery例項屬性,並可以直接用electricar的例項呼叫battery中的describe_battery()方法。

def __init__(self,make,model,year):

"""初始化父類的屬性"""

super().__init__(make,model,year)

self.battery=battery()

my_tesla.battery.describe_battery()
4.匯入類

(1)從某個.py檔案匯入某個類,比如從car.py匯入car類,可以寫成from car  import car 

(2)從某個模組匯入多個類,用逗號分分隔各個類。;例如:from car import car,electriccar

(3)匯入整個模組,import car

(4)匯入模組中的所有類,from car import *

5.python標準庫

python標準庫是一組模組,安裝的python都包含它。我們可使用標準庫中的任何函式和類,只需要在程式的開頭包含一i條簡單的import語句。下面來看乙個collections中的ordereddict類。ordereddict例項的行為幾乎與字典相同,區別只在於記錄了鍵值對的新增順序。

from collections import ordereddict

f**orite_language=ordereddict()

f**orite_language['jen']='python'

f**orite_language['sarah']='j**a'

f**orite_language['edward']='php'

f**orite_language['phil']='c'

for name,cname in f**orite_language.items():

print(name.title()+' f**orite language is '+ cname )

佇列的相關概念及操作

什麼是佇列?佇列就是乙個隊伍,佇列和棧一樣,由一段連續的儲存空間組成,是乙個具有自身特殊規則的資料結構,我們都知道棧的先進後出的規則,而佇列剛好相反,是乙個先進先出的 fifo 或者說後進後出 lilo 的資料結構。佇列的是一種受限制的資料結構,插入操作只能從一端操作,這一端叫做隊尾,而移除操作也只...

Git概念及基礎

git重點 一 起步 1 檔案的版本 1 操作麻煩 2 命名不規範 3 容易丟失 4 協作困難 2 版本控制軟體 1 概念 把手工管理檔案版本的方式,改為由軟體管理檔案的版本 這個負責管理檔案版本的軟體,叫做 版本控制軟體 2 好處 操作簡便 易於對比 易於回溯 不易丟失 協作方便 3 版本控制系統...

Docker相關概念及要點

1.基本概念 docker 的容器通過 linux 的命名空間完成了與宿主機程序的網路隔離。docker 為我們提供了四種不同的網路模式,host container none 和 bridge 模式。docker 預設的網路設定模式 網橋模式。我們通過 linux 的命名空間為新建立的程序隔離了檔...