物件導向程式設計是一種程式設計正規化,把程式看作不同物件的相互呼叫,對現實世界建立物件模型。
定義乙個person
類如下:
class
person
(object):
pass
格式為:
class 類名(
object):
# object表示定義的類是由那個類繼承下來的
函式體pass
類名一般以大寫開頭。建立例項使用類名 + ()
,類似函式的形式建立:
xvsong = person(
)# 建立」許嵩「物件
在定義 person 類時,可以為person類新增乙個特殊的init()
方法,當建立例項時init()
方法,當建立例項時,__init__()
方法被自動呼叫,能在此為每個例項都統一加上以下屬性:
class
person
(object):
def__init__
(self, name, gender, birth)
: self.name = name
self.gender = gender
self.birth = birth
__init__()
方法的第乙個引數必須是self
,後續引數則可以自由指定。建立例項時,就必須要提供除self
以外的引數:
xvsong = person(
'xvsong'
,'male'
,'1987-1-1'
)
要定義關鍵字引數,使用 **kw;除了可以直接使用self.name = '***』設定乙個屬性外,還可以通過 setattr(self, 『name』, 『***』) 設定屬性。下面是乙個例子:
定義person
類的__init__
方法,除了接受name
、gender
和birth
外,還可接受任意關鍵字引數,並把他們都作為屬性賦值給例項。
class
person
(object):
def__init__
(self, name, gender,
**kw)
: self.name =name
self.gender = gender
for k, v in kw.items():
setattr
(self, k, v)
pass
pass
pass
再輸入:
xvsong = person(
'xvsong'
,'male'
, job=
'singer'
, face=
'beautiful'
)print
(xvsong.name)
print
(xvsong.job)
print
(xvsong.face)
輸出如下:
xvsong
singer
beautiful
定義類屬性可以直接在 class 中定義:
class
person
(object):
address =
'earth'
def__init__
(self, name)
: self.name = name
因為類屬性是直接繫結在類上的,所以,訪問類屬性不需要建立例項,就可以直接訪問:
print
(person.address)
輸出如下:
earth
python是動態語言,類屬性也是可以動態新增和修改的:
person.address =
'china'
print
(person.address)
輸出如下:
china
因為類屬性只有乙份,所以,當person類的address改變時,所有例項訪問到的類屬性都改變了。 在 class 中定義的例項方法其實也是屬性,它實際上是乙個函式物件:
class
person
(object):
def__init__
(self, name, score)
: self.name = name
self.score = score
defget_grade
(self)
:return
'a'
再輸入:
p1 = person(
'bob',90
)print
(p1.get_grade)
輸出如下:
>>
輸入如下:
print
(p1.get_grade(
))
輸出如下:
a
就是說,p1.get_grade返回的是乙個函式物件,但這個函式是乙個繫結到例項的函式,p1.get_grade()才是方法呼叫。
可以給乙個例項繫結很多屬性,如果有些屬性不希望被外部訪問到怎麼辦?python對屬性許可權的控制是通過屬性名來實現的,如果乙個屬性由雙下劃線開頭(__),該屬性就無法被外部訪問。下面的**是乙個例子:
class
person
(object):
def__init__
(self, name)
: self.name = name
self._title =
'mr'
self.__job =
'student'
輸入如下:
p = person(
'bob'
)print
(p.name)
輸出如下:
bob
輸入如下:
print
(p._title)
輸出如下:
mr
輸入如下:
print
(p.__job)
執行上面一行後會出錯。
如果乙個屬性以__***__
的形式定義,那它又可以被外部訪問了。以__***__
定義的屬性在python的類中被稱為特殊屬性。有很多預定義的特殊屬性可以使用,通常不要把普通屬性用__***__
定義。以單下劃線開頭的屬性_***
雖然也可以被外部訪問,但是,按照習慣不應該被外部訪問。
Python 物件導向程式設計的核心概念知識點簡介
第乙個概念 在物件導向程式設計中,物件將變數和方法集中在乙個地方,即物件本身。第二個概念 指的是隱藏類的內部資料,避免客戶端 直接進行訪問。class data def init self self.list1 22,33,44,55,66 def chang list self,index,num...
物件導向程式設計 基礎知識點
類,是對一類事物的抽象描述。所謂抽象描述,就是將這一類事物所共有的屬性特徵 成員屬性 和行為方法 成員方法 抽取出來。物件導向的特點 封裝性 繼承性 多型性。1 宣告類 2 宣告成員屬性 3 例項化類物件 4 訪問公有成員屬性 5 呼叫公有成員方法 6 this 定義類 class user 例項化...
python之物件導向知識點總結
物件導向 三大特性 封裝 繼承 多型 python 本身是一種弱型別語言,本身就支援多型 繼承 多重繼承 執行某個方法 尋找方法的規律 從下往上 從左往右 始終記得self物件代表的是誰,那個物件呼叫的方法,self酒代表的是誰 通過super 類,self init 可以呼叫父類的構造方法 還可以...