Python基礎(chǔ)15-面向?qū)ο?類/對象/屬性)

1 基本理論

1.1 對象

  • python 是一門特別徹底的面向?qū)ο缶幊?oop)的語言

其他語言會分為基本數(shù)據(jù)類型脓鹃,和對象類型 (如 Objective-C)。
python 則全部都是對象類型,包括 int float等

1.2 面向過程副瀑、面向?qū)ο?/h2>
  • 兩者都是解決方法的思想
  • 面向過程:在解決問題的時候舱污,關(guān)注的是解決問題的每一個過程(步驟)
  • 面向?qū)ο螅涸诮鉀Q問題的時候,關(guān)注的是解決問題所需要的對象
  • 面向?qū)ο蟊旧硎敲嫦蜻^程的封裝
面向過程粱栖,關(guān)注的是:功能步驟的劃分
面向?qū)ο蠡敖剑P(guān)注的是:功能步驟封裝

1.3 類

  • 類指的是某一個具體對象特征的抽象
  • 類的作用:根據(jù)抽象類,生產(chǎn)具體的對象
  • python 中類的定義
# 定義類
class Person:
    pass

# 實例化 Person
man = Person()
print(man)

# 對比函數(shù)的定義
def sum():
    pass

pycharm 小技巧:
快速輸入 print(man)闹究,可以通過先敲 man.pri + tab鍵自動補(bǔ)全后則會變成前面的打印語句

2 類與對象關(guān)系

# 定義一個類
class Money:
    pass

#查看類的命名 (__name__ 是 class 的屬性)
print(Money.__name__)

# xxx = Money
# print(xxx.__name__) 

# 類名同時也是一個變量
Money = 666
print(Money)  # 結(jié)果就是666

# # 根據(jù)這個類幔崖, 創(chuàng)建(實例化)一個對象
one = Money()
print(one) # 是一個 objc
print(one.__class__) # 打印出 Money 類
對象與類的關(guān)系

3 對象屬性操作

  • 給對象添加屬性
# 1. 定義一個類
class Person:
    pass

# 2. 根據(jù)類, 創(chuàng)建一個對象
p= Person()

# 3. 給p對象, 增加一些屬性
p.age = 18
p.height = 180

# 4. 驗證是否有添加成功
print(p.age)
  • 刪除對象屬性赏寇,通過刪除語句
del p.age
  • 查看該實例所有屬性
print(p.__dict__)
  • 修改對象屬性
p.age = 100
  • 給實例添加可變屬性及修改屬性
p.pets = ["小花", "小黑"]
print(p.pets, id(p.pets))

p.pets.append("小黃")
print(p.pets, id(p.pets))
# 屬性值改變后 id 不變
  • 查看對象屬性
print(p.age)
  • 同一類下的不同對象吉嫩,不能互相訪問屬性,即

p1 = Person()
p2 = Person()

p1.age = 18
p2.address = "上海"

print(p1.address) # 報 error嗅定,說 p1沒有address屬性

4 類屬性操作

  • 類的本質(zhì)也是一個對象率挣,一般稱為類對象,那么類同樣也具有對象屬性的性質(zhì)
  • 給類增加屬性1 - 通過 類名.屬性方式
class Money:
    pass

Money.count = 1
Money.age = 18

print(Money.count)
# 查看類的所有屬性
print(Money.__dict__)
  • 給類增加屬性2 - 在類代碼體內(nèi)添加
class Money:
    age = 18
    count = 1

print(Money.age)
print(Money.count)
print(Money.__dict__)

  • 類屬性訪問
#方式一:通過類名直接訪問
Money.age

#方式二:通過實例對象訪問類屬性
class Money:
    age = 18

one = Money()
print(one.age) 

  • 類屬性修改
# 只能通過類名修改
Money.age = 100

# 如果“通過實例修改類屬性”露戒,并不影響類屬性椒功,同時實例會增加一個 age 屬性
one.age = 19
print(Money.age)

print(one.__dict__) # 打印結(jié)果不包含類的屬性

python 對象屬性的查找機(jī)制
1.優(yōu)先到對象自身去查找屬性,找到結(jié)束
2.沒找到智什,則通過class找到對應(yīng)的類动漾,然后在該類里查找
對象的__class__屬性是可以被動態(tài)修改。
one.__class__ = Test

  • 刪除類屬性
del Money.age
# 不能通過對象刪除荠锭,del 語句只能刪除直系屬性
  • 注意
1. 只能通過類名進(jìn)行的類屬性操作:增旱眯、刪、改
   可以通過類名和實例對象進(jìn)行的類屬性操作:查

2. 類屬性的內(nèi)存存儲問題
    - 一般情況下证九,屬性存儲在__dict__的字典當(dāng)中删豺,有些內(nèi)置對象沒有__dict__屬性
    - 一般對象可以直接修改__dict__屬性
    - 但類對象的__dict__為只讀:默認(rèn)無法修改,可以通過 seattr 方法修改

3. 類屬性被各個對象共享
  • 限制對象屬性的添加 __slots__
# 一般情況下愧怜,實例對象可以通過 實例.屬性名 方式動態(tài)添加無限個實例屬性呀页,
# 這種能力有時候會對抽象類造成污染,或者希望該類產(chǎn)生的實例只能添加指定名稱屬性時
# 就可以通過類屬性 __slots__ 來限制對象添加屬性

class Person:
    __slots__ = ["age"]
    pass

p1 = Person()
p1.age = 1
p1.num = 2 #報錯拥坛,Person object 沒有 num 屬性
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蓬蝶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猜惋,更是在濱河造成了極大的恐慌丸氛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件著摔,死亡現(xiàn)場離奇詭異缓窜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谍咆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門禾锤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卧波,你說我怎么就攤上這事时肿。” “怎么了港粱?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我查坪,道長寸宏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任偿曙,我火速辦了婚禮氮凝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘望忆。我一直安慰自己罩阵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布启摄。 她就那樣靜靜地躺著稿壁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歉备。 梳的紋絲不亂的頭發(fā)上傅是,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音蕾羊,去河邊找鬼喧笔。 笑死,一個胖子當(dāng)著我的面吹牛龟再,可吹牛的內(nèi)容都是我干的书闸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼利凑,長吁一口氣:“原來是場噩夢啊……” “哼梗劫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起截碴,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梳侨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后日丹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體走哺,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年哲虾,在試婚紗的時候發(fā)現(xiàn)自己被綠了丙躏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡束凑,死狀恐怖晒旅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汪诉,我是刑警寧澤废恋,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布谈秫,位于F島的核電站,受9級特大地震影響鱼鼓,放射性物質(zhì)發(fā)生泄漏拟烫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一迄本、第九天 我趴在偏房一處隱蔽的房頂上張望硕淑。 院中可真熱鬧,春花似錦嘉赎、人聲如沸置媳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拇囊。三九已至,卻和暖如春赃份,著一層夾襖步出監(jiān)牢的瞬間寂拆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工抓韩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留纠永,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓谒拴,卻偏偏與公主長得像尝江,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子英上,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359