Python定義一個(gè)類

在面向?qū)ο蟮氖澜缋铮?br> 你的代碼通常稱為 類的方法 method
而數(shù)據(jù)通常稱為 類的屬性 attribute躏仇,
實(shí)例化的數(shù)據(jù)對(duì)象通常稱為 實(shí)例 instance雕拼。

Python使用class創(chuàng)建類。每個(gè)定義的類都有一個(gè)特殊的方法歼捏,名為__init__()稿存,可以通過這個(gè)方法控制如何初始化對(duì)象。
類中方法的定義與函數(shù)的定義類似瞳秽,基本形式如下:

class Athlete:
    def __init__(self):
        # The code to initialize a "Athlete" object.

1. __init__()方法

有了類之后瓣履,創(chuàng)建對(duì)象實(shí)例很容易。只需將對(duì)類名的調(diào)用賦至各個(gè)變量练俐。通過這種方式袖迎,類(以及__init__()方法)提供了一種機(jī)制,允許你創(chuàng)建一個(gè)定制的工廠函數(shù)腺晾,用來(lái)根據(jù)需要?jiǎng)?chuàng)建多個(gè)對(duì)象實(shí)例燕锥。
與C++系列語(yǔ)言不同,Python中沒有定義構(gòu)造函數(shù)new的概念悯蝉。Python會(huì)對(duì)你完成對(duì)象構(gòu)建归形,然后你可以使用__init__()方法定制對(duì)象的初始狀態(tài)。

2. self參數(shù)

Python處理實(shí)例化a = Athlete()時(shí)泉粉,把工廠函數(shù)調(diào)用轉(zhuǎn)換為了Athlete().__init__(a)连霉,也就是說,Python會(huì)將實(shí)例的目標(biāo)標(biāo)識(shí)符a賦至self參數(shù)中嗡靡,這是一個(gè)非常重要的參數(shù)賦值。如果沒有這個(gè)賦值窟感,Python解釋器無(wú)法得出方法調(diào)用要應(yīng)用到哪個(gè)對(duì)象實(shí)例讨彼。
注意:類代碼設(shè)計(jì)為在所有對(duì)象實(shí)例間共享:方法是共享的,而屬性不共享柿祈。self參數(shù)可以幫助標(biāo)識(shí)要處理哪個(gè)對(duì)象實(shí)例的數(shù)據(jù)哈误。
每一個(gè)方法的第一個(gè)參數(shù)都是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):
        self.times.append(time_value)

    def add_times(self, list_of_times):
        self.times.extend(list_of_times)

3. 繼承

可以繼承l(wèi)ist類創(chuàng)建AthleteList類躏嚎,list類自帶append()extend()方法

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()))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜜自,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卢佣,更是在濱河造成了極大的恐慌重荠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虚茶,死亡現(xiàn)場(chǎng)離奇詭異戈鲁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嘹叫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門婆殿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人罩扇,你說我怎么就攤上這事婆芦。” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵消约,是天一觀的道長(zhǎng)癌压。 經(jīng)常有香客問我,道長(zhǎng)荆陆,這世上最難降的妖魔是什么滩届? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮被啼,結(jié)果婚禮上帜消,老公的妹妹穿的比我還像新娘。我一直安慰自己浓体,他們只是感情好泡挺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著命浴,像睡著了一般娄猫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上生闲,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天媳溺,我揣著相機(jī)與錄音,去河邊找鬼碍讯。 笑死悬蔽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捉兴。 我是一名探鬼主播蝎困,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼倍啥!你這毒婦竟也來(lái)了禾乘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤虽缕,失蹤者是張志新(化名)和其女友劉穎始藕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彼宠,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳄虱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凭峡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拙已。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摧冀,靈堂內(nèi)的尸體忽然破棺而出倍踪,到底是詐尸還是另有隱情系宫,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布建车,位于F島的核電站扩借,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缤至。R本人自食惡果不足惜潮罪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望领斥。 院中可真熱鬧嫉到,春花似錦、人聲如沸月洛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嚼黔。三九已至细层,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唬涧,已是汗流浹背疫赎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爵卒,地道東北人虚缎。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钓株,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子陌僵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容