在物件導向的世界裡,
你的**通常稱為 類的方法 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.使用了 ...