python的物件導向程式設計(一)

2021-08-24 17:42:38 字數 2842 閱讀 9293

一、類和例項

類是抽象的模板,而通過類可以例項出來物件。

1、建立類:

class person(object):

pass

class 類名(繼承的類的類名)

通常情況下:當乙個類沒有要繼承的類的情況下,就繼承 object類,object是所有的類都會繼承的類;

2、建立類的物件並且為類的物件繫結屬性

p1 = person()            #建立乙個person類的物件p1

p1.name = 'hh' #為p1繫結name屬性

p1.age = 18 #為p1繫結age屬性

print('p1.name:',p1.name,'p1.age:',p1.age)

3.__init__方法

在建立例項時,可以通過__init__方法將一些必須要繫結的屬性強制繫結;

class person(object):

def __init__(self,name,age):

self.name = name

self.age = age

p2 = person('hh',18)

當使用__init__方法進行屬性的繫結之後,在進行物件的建立時就要對__init__方法進行傳遞引數(self引數不用傳,python直譯器會自己傳);

注:類中的方法第乙個引數必須是:self;

二、類的屬性的限制訪問

訪問限制就是在類外不能直接通過物件對於屬性進行操作,類似於c++中的private,但是在python中,是通過對於以__開頭的屬性進行重新命名(改變屬性名,讓你不知道這個屬性的名字)實現的。

因為python將person類的__name屬性進行了重新命名,所以通過物件.__name是訪問不到的;

當我們要對於這類屬性進行操作的時候可以通過定義方法進行去操作,例如:get_name方法;

三、繼承和多型

當子類對於父類進行繼承時,會繼承父類的方法,子類也可以對於父類的方法進行覆蓋:

當子類對於父類的方法覆蓋之後,在子類的物件進行呼叫的時候,呼叫的為子類的方法;

在python中,如果乙個方法的引數型別為plant型別,那麼也可以傳入grass的物件或者tree物件,也就是說子類的物件的資料型別也可以是父類,但是子類的資料型別則不能為父類。

四、類的屬性和例項的屬性

類的屬性歸類所有的例項共享的,但是例項的屬性是可以隨意繫結的;

class person(object):

group = 'person'

def __init__(self,name):

self.name = name

當例項的屬性名稱和類的屬性名稱相同時,例項的屬性就會覆蓋類的屬性(不建議例項的屬性和類的屬性使用相同的名稱);

五、屬性和方法的繫結

在python中,建立乙個類的物件後可以為該物件繫結任何的屬性和方法;

class person(object):

pass

p1 = person()

p1.name = 'hh' //為person的類的物件p1繫結屬性name;

def hello(self):

print('hello')

from types import methodtype

p1.hello=methodtype(hello,p1) //將hello的方法繫結到p1物件

p1.hello() //p1物件呼叫hello()方法

當給乙個物件繫結方法之後,對於該類的其他例項是不起作用的,所以,可以通過對乙個類繫結方法,讓該類的所有例項都具有該方法。

def play(self):

print('playing')

person.play = play

p2 = person()

p2.play()

當乙個類需要限制例項的屬性時,可以通過__slots__變數進行操作;

由於person類限制了屬性只能是name和age這兩個屬性,所以***屬性繫結失敗;

Python物件導向程式設計 一

類和例項 定義乙個student類 object父類 class student object pass 複製 注意 特殊方法 init 前後有兩個下劃線!def init self,name,score self.name name self.score score 複製 def get grad...

Python物件導向程式設計 一

類和例項 定義乙個student類 object父類 class student object pass 複製 注意 特殊方法 init 前後有兩個下劃線!def init self,name,score self.name name self.score score 複製 def get grad...

Python 物件導向程式設計(一)

python是一門物件導向的程式語言 所謂的物件導向的語言,簡單理解就是語言中的所有操作都是通過物件來進行的。先看一下面向過程的程式設計的語言 面向過程指將我們的程式的邏輯分解為乙個乙個的步驟,通過對每個步驟的抽象,來完成程式。例如 孩子上學 分7步 1.媽媽起床 2.媽媽洗漱 3.媽媽做早飯 4....