python定義乙個 Python定義乙個類

2021-10-16 15:55:05 字數 2416 閱讀 6378

在物件導向的世界裡,

你的**通常稱為 類的方法 method,

而資料通常稱為 類的屬性 attribute,

例項化的資料物件通常稱為 例項 instance。

python使用class建立類。每個定義的類都有乙個特殊的方法,名為__init__(),可以通過這個方法控制如何初始化物件。

類中方法的定義與函式的定義類似,基本形式如下:

class athlete:

def __init__(self):

# the code to initialize a "athlete" object.

1. __init__()方法

有了類之後,建立物件例項很容易。只需將對類名的呼叫賦至各個變數。通過這種方式,類(以及__init__()方法)提供了一種機制,允許你建立乙個定製的工廠函式,用來根據需要建立多個物件例項。

與c++系列語言不同,python中沒有定義建構函式new的概念。python會對你完成物件構建,然後你可以使用__init__()方法定製物件的初始狀態。

2. self引數

python處理例項化a = athlete()時,把工廠函式呼叫轉換為了athlete().__init__(a),也就是說,python會將例項的目標識別符號a賦至self引數中,這是乙個非常重要的引數賦值。如果沒有這個賦值,python直譯器無法得出方法呼叫要應用到哪個物件例項。

注意:類**設計為在所有物件例項間共享:方法是共享的,而屬性不共享。self引數可以幫助標識要處理哪個物件例項的資料。

每乙個方法的第乙個引數都是self。

class athlete:

def __init__(self, a_name, a_dob=none, a_times=):

self.name = a_name

self.dob = a_dob

self.times = a_times

def top3(self):

return(sorted(set([sanitize(t) for t in self.times])) [0:3])

def add_time(self, time_value):

def add_times(self, list_of_times):

self.times.extend(list_of_times)

3. 繼承

class athletelist(list):

def __init__(self, a_name, a_dob=none, a_times=):

list.__init__()

self.name = a_name

self.dob = a_dob

self.extend(a_times)

def top3(self):

return (sorted(set([sanitize(t) for t in self])) [0:3])

4. **示例

def sanitize(time_string):

if '_' in time_string:

splitter = '_'

elif ':' in time_string:

splitter = ':'

else:

return(time_string)

(mins, secs) = time_string.split(splitter)

return(mins + '.' + secs)

class athletelist(list):

def __init__(self, a_name, a_dob=none, a_times=):

list.__init__()

self.name = a_name

self.dob = a_dob

self.extend(a_times)

def top3(self):

return (sorted(set([sanitize(t) for t in self])) [0:3])

def get_coach_data(filename):

try:

with open(filename) as f:

data = f.readline()

templ = data.strip().split(',')

return (athlete(templ.pop(0), templ.pop(0), templ))

except ioerror as ioerr:

print('file error: ', + str(ioerr))

return(none)

james = get_coach_data('james2.txt')

print(james.name + "'s fastest times are: " + str(james.top3()))

在乙個python裡執行另乙個python檔案

os.popen cmd,mode r buffering 1 command 呼叫的命令 mode 模式許可權可以是 r 預設 或 w bufsize 指明了檔案需要的緩衝大小 0意味著無緩衝 1意味著行緩衝 其它正值表示使用引數大小的緩衝 大概值,以位元組為單位 負的bufsize意味著使用系統...

初識python,編寫乙個簡單的python程式

在ubuntu下安裝好了最新的python3.9,開啟學習python之旅。在命令列輸入python進入互動模式 互動模式下,你每輸入一行 python直譯器就將這一行 轉換成機器碼來執行。例如 互動模式輸入100 200,然後回車 直接會顯示執行結果300 但是這樣的 是沒有儲存的,如果下次我們還...

Python定義乙個函式

python函式 實現某種功能的 段 定義乙個函式需要遵循的規則 1.使用 def 關鍵字 函式名和 括號內可以有形參 匿名函式使用 lambda 關鍵字定義 2.任何傳入引數和自變數必須放在括號中 3.函式的第一行語句可以使用字串存放函式說明 4.函式內容以冒號開始,函式內的 塊縮排 5.使用了 ...