前言
真實(shí)世界的對(duì)象特征: 狀態(tài)和行為挽放。
貓
- 貓狀態(tài):品種、名字
- 貓行為:喵叫蔓纠、搖尾巴辑畦、捉老鼠
臺(tái)燈
- 臺(tái)燈狀態(tài):開(kāi)、關(guān)
- 臺(tái)燈行為:打開(kāi)腿倚、關(guān)閉
臺(tái)式收音機(jī)
- 收音機(jī)狀態(tài):開(kāi)纯出、關(guān)、當(dāng)前音量敷燎、當(dāng)前頻道
- 收音機(jī)行為: 打開(kāi)暂筝、關(guān)閉、增加音量硬贯、減小音量焕襟、搜索、掃描饭豹、調(diào)頻
Python中的類叫Class object鸵赖,類的實(shí)例叫Instance object
類(Class)
基本上可以看作數(shù)據(jù)(特性)以及由一系列可以存取务漩、操作這些數(shù)據(jù)的方法所組成的集合。
來(lái)源:《Python基礎(chǔ)教程》Chapter7
用來(lái)描述具有相同的屬性(Attribute)和方法(Method)的對(duì)象的集合卫漫。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法菲饼,對(duì)象是類的實(shí)例。
來(lái)源:菜鳥(niǎo)教程
在實(shí)際編程中經(jīng)常用的屬性這個(gè)詞列赎,在python的class中有兩種屬性:類屬性宏悦、數(shù)據(jù)屬性。(大多數(shù)編程語(yǔ)言都有這樣兩種屬性)包吝,類屬性屬于類饼煞,數(shù)據(jù)屬性屬于類的實(shí)例。我們假設(shè)有類Test,則一般這兩種屬性的用法
類屬性
Test.mode
;
數(shù)據(jù)屬性
t = Test()
t.name
來(lái)源:類屬性解釋
類對(duì)象提供兩種操作
- 屬性引用诗越;屬性引用語(yǔ)法:obj.name; 有效的屬性名是類對(duì)象創(chuàng)建時(shí)類的名稱空間內(nèi)的所有名字砖瞧。例如:MyClass.i
>>> class MyClass:
... """A simple example class"""
... i = 123
... def f(self):
... return 'hello world'
...
>>> MyClass.i
123
>>> MyClass.i = 10
-
實(shí)例化;實(shí)例化的對(duì)象唯一可以進(jìn)行的操作是屬性引用嚷狞;
類的實(shí)例化使用函數(shù)記號(hào),例如:
>>> x =MyClass()
>>> x.i
42
新建一個(gè)對(duì)象的過(guò)程稱為實(shí)例化(instantiation) 块促,而對(duì)象是這個(gè)類的一個(gè)實(shí)例。每個(gè)對(duì)象都是某個(gè)類的實(shí)例床未,所以“對(duì)象”和“實(shí)例”這兩個(gè)詞很多情況下情況下都可以互換竭翠。
來(lái)源:《像計(jì)算機(jī)科學(xué)家一樣思考Python》
實(shí)例化對(duì)象有兩類有效的屬性名,數(shù)據(jù)屬性和方法薇搁。數(shù)據(jù)屬性(Data attribute)對(duì)應(yīng)C++中的數(shù)據(jù)成員斋扰,數(shù)據(jù)屬性無(wú)需聲明,第一次給它賦值時(shí)就表明了它的存在啃洋;另一種實(shí)例化的屬性引用叫做方法(Method)传货,方法是對(duì)象內(nèi)的一個(gè)函數(shù)。
類的方法
在類的內(nèi)部宏娄,使用 def 關(guān)鍵字可以為類定義一個(gè)方法问裕,與一般函數(shù)定義不同,類方法必須包含參數(shù) self,且為第一個(gè)參數(shù)绝编。
通常調(diào)用一份方法的方式是:
x.f()
但是僻澎,由于x.f是一個(gè)方法對(duì)象,所以可以存儲(chǔ)起來(lái)十饥,以便以后調(diào)用。
>>> class MyClass:
... """A simple example class"""
... i = 12345
... def f(self):
... return 'hello world'
...
>>> x = MyClass()
>>> x.f()
'hello world'
>>> xf = x.f
>>> xf()
'hello world'