Python筆記(七):字典、類、屬性、對象實例、繼承

(一)  簡單說明數據結構

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

{'姓名': '張三', '出生日期': '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])學習

輸出以下所示:測試

 

 

(二)  將列表轉換爲字典code

(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

 

(三)  類、屬性、對象實例

 簡單的說,類和屬性都是一個抽象的概念,對象實例是一個具體的「存在」。例如:

類:人

屬性:姓名、身高、體重

對象實例:張3、李四

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

(四)  建立類、建立對象實例

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)
相關文章
相關標籤/搜索