国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python面向對象基礎入門之設置對象屬性

2020-02-16 00:04:10
字體:
來源:轉載
供稿:網友

前言

前面我們已經介紹了 python面向對象入門教程之從代碼復用開始(一) ,這篇文章主要介紹的是關于Python面向對象之設置對象屬性的相關內容,下面話不多說了,來一起看看詳細的介紹吧

用類存儲數據

類實際上就是一個數據結構,對于python而言,它是一個類似于字典的結構。當根據類創建了對象之后,這個對象就有了一個數據結構,包含一些賦值了的屬性。在這一點上,它和其它語言的struct的作用是類似的:存儲數據并提供數據檢索功能。

例如,下面是史上最簡單的類:

class Person: pass

pass關鍵字表示這個類沒有實際的邏輯體。這里只是定義了一個類,這個類的對象初始化時不會存放任何數據。現在,構造一個對象,讓它和dict一樣存放一些數據:

p = Person() # 構造對象p.name = "longshuai" # 創建對象的屬性namep.age = 23   # 創建對象的屬性age

現在,Person的實例對象p中就存放了兩個屬性:p.name和p.age。可以直接去檢索存放在p中的數據:

print(p.name) # 輸出"longshuai"print(p.age) # 輸出23

也可以使用dict來存儲這些數據:

>>> d={}>>> d["name"]="longshuai">>> d["age"]=23>>> print(d["name"])longshuai>>> print(d["age"])23

在數據存儲方面,它們的作用是完全等價的。實際上對象/類在內部就是使用一個名為__dict__的dict類型來存放它所擁有的數據的。

>>> p.__dict__{'name': 'longshuai', 'age': 23}

__init__()構造對象初始數據

上面的name和age屬性是在構建了對象之后附加上去的,如果想要創建對象時就存放好數據,可以定義類的構造函數__init__()。例如:

class Person: def __init__(self,name,age):  self.name = name  self.age = age

然后創建對象的時候,傳遞name參數和age參數即可。

>>> p = Person("longshuai",23)>>> p.__dict__{'name': 'longshuai', 'age': 23}

如果想定義這個類公有的數據,可以將公有屬性定義為類的屬性。比如中國人都是黃皮膚:

class Person: skin = "yellow" def __init__(self,name,age):  self.name = name  self.age = age

這樣每次創建Person的對象實例時,每個對象都會有相同的膚色:yellow。但注意,這個skin屬性是類屬性,不是對象屬性,它是存放在類的名稱空間中的。當對象真的需要這個屬性的時候,會臨時去檢索類的名稱空間來獲取。看下面的__dict__字典即可知道:

>>> p = Person("longshuai",23)>>> p.__dict__{'name': 'longshuai', 'age': 23}>>> p.skin'yellow'            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丽水市| 清镇市| 华蓥市| 九龙城区| 久治县| 麻栗坡县| 双牌县| 扎赉特旗| 上犹县| 山阴县| 云霄县| 德阳市| 日照市| 昆明市| 康保县| 唐山市| 新宾| 南川市| 孝昌县| 华蓥市| 如皋市| 涞水县| 高台县| 临洮县| 霍州市| 江山市| 龙门县| 东宁县| 昭平县| 连南| 武安市| 凌源市| 巴林左旗| 宜兴市| 铁岭市| 阿克苏市| 永寿县| 封开县| 岐山县| 大方县| 沁源县|