Python筆記(七):字典、類、屬性、對象執行個體、繼承

來源:互聯網
上載者:User

標籤:自動調用   img   2.4   集合   基礎   2.3   定位   執行個體   eve   

(一)  簡單說明

   字典是Python的內建資料結構,將資料與鍵關聯(例如:姓名:張三,姓名是鍵,張三就是資料)。例如:下面這個就是一個字典

{‘姓名‘: ‘張三‘, ‘出生日期‘: ‘2899-08-12‘, ‘成績‘: [‘3.21‘, ‘3.10‘, ‘3.01‘]}

 

建立字典、添加資料、訪問字典資料的方式如下:

d = {}  #直接用{}建立字典
f = dict()#通過工廠函數dict()建立字典
#通過下面的方式添加資料
d[姓名‘] = 張三‘
d[出生日期‘] = ‘2899-08-12‘
d[成績‘] = [‘3.21‘, ‘3.10‘, ‘3.01‘, ‘2.45‘, ‘2.34‘, ‘2.22‘, ‘2.01‘]
print(d)
#通過鍵訪問字典的資料
print(d[姓名‘])
print(d[出生日期‘])
print(d[成績‘])
print(d[成績‘][2])

輸出如下所示:

 

 

(二)  將列錶轉換為字典

(1)  建立一個檔案

james2.txt 第一項是姓名,第二項是出生日期,後面的是成績

James Lee,2002-3-14,2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22,2-01,2.01,2:16

(2)  要求

在螢幕上輸出下面格式的字典

{‘姓名‘: ‘James Lee‘, ‘出生日期‘: ‘2002-3-14‘, ‘成績‘: [‘3.21‘, ‘3.10‘, ‘3.01‘]}

(3)  主程式碼

from FirstPython import the_dict as td

the_james2 = td.chdict(‘F:\Python\Python檔案\james2.txt‘)
print(the_james2)

 

(4)   the_dict模組代碼

def sanitize(time_str):
    #傳入字串,將‘-‘和‘:‘修改為‘.‘並返回,否則直接返回
   
if ‘-‘ in time_str:
        (x,y) = time_str.split(‘-‘,1)
        return(x+"."+y)
    elif ‘:‘ in time_str:
        (x,y) = time_str.split(‘:‘,1)
        return (x + "." + y)
    else:
        return(time_str)

def chdict(the_file):
    #傳入檔案,返回一個字典
   
d = dict()
    with open(the_file) as james_file:
        the_list = james_file.readline().strip().split(‘,‘)
        #分割資料,返回一個列表
   
d[姓名‘] = the_list.pop(0)
    #pop()刪除指定位置的資料項目並返回
   
d[出生日期‘] = the_list.pop(0)
    d[成績‘] = sorted(set([sanitize(t) for t in the_list ]),reverse=True)[0:3]
    #set()重複資料刪除資料並返回一個無序的集合,sorted()排序
   
return d

 

(三)  類、屬性、對象執行個體

 簡單的說,類和屬性都是一個抽象的概念,對象執行個體是一個具體的“存在”。例如:

類:人

屬性:姓名、身高、體重

對象執行個體:張三、李四

人 指一類東西,身高、姓名、體重 是這類東西都有的屬性,張三、李四指的是具體的某一個人。

(四)  建立類、建立對象執行個體

class People:
    def __init__(self):

說明:上面這部分是必須有的,其中 People是類名,自己自訂,__init__(self)方法控制如何初始化對象,self也是必須有的(這是一個目標標識符,標識當前對象具體是什麼)

舉個例子:

(1)   建立一個類

class People:
    def __init__(self,name,date=None,achievement=[]):

# date,achievement有預設(預設)值
        self.name = name
        self.date = date
        self.achievement = achievement

(2)  建立對象執行個體

zs = People(張三‘)

#建立 name為張三的對象執行個體

說明:使用zs = People(張三‘)時,會自動調用people類的 __init__()方法,其中self = zs,name=’張三’,然後建立一個 name = ‘張三’date=None,achievement=[] 的對象執行個體zs

 

(3)   類中可以定義很多方法,不過每個方法的第一個參數都必須是self(沒有設定這個參數,那麼第一參數就會被當做self參數處理)。

例如:

def chdict(self,the_file):
    with open(the_file) as new_file:
        the_list = new_file.readline().strip().split(‘,‘)
    return People(the_list.pop(0),the_list.pop(0),the_list)
def top3(self):
    return(sorted(set(self.sanitize(t) for t in self.achievement),reverse=True)[0:3])

 

(五)  繼承

  可以從零開始建立一個新類,也可以繼承已經建立好的類,在這個基礎上新增屬性、方法。

繼承的概念:繼承父類的所有方法及屬性,子類可以新增方法、屬性,也可以重寫父類的方法。簡單的說,比如你繼承了你父親的所有能力及天賦(包括身高、體重等),然後你可以通過學習去掌握更多的能力,繼承自你父親的能力你也可以根據自己的需要去改變(比如:傑出的溝通能力,你父親可能用在商業談判上,你可能想用在泡妞上面)。比喻可能不太形象,請多多包涵。

(1)   通過繼承的方式建立一個類

class PeopleList(list):
    def __init__(self):
        list.__init__([])

PeopleList(list)新類將派生list類,list.__init__([]) 初始化所派生的類

(2)  舉個例子,下面這個類就能繼承list的所有方法

class PeopleList(list):
    def __init__(self,name,date=None,achievement=[]):
        list.__init__([])
        self.name = name
        self.date = date
        self.extend(achievement)
可以在編輯器中進行測試:
james = PeopleList(‘james‘)
james.append(5)
print(james)
james.extend([1,2,3])
print(james)

 

Python筆記(七):字典、類、屬性、對象執行個體、繼承

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.