物件導向程式設計

2022-09-15 04:45:12 字數 3138 閱讀 1918

在學習物件導向之前,我們用函式來封裝我們的功能,當我們要使用時,就呼叫函式來實現我們的需求。現在我們學習了物件導向的知識,知道了類和物件,其實函式式程式設計和物件導向程式設計都可以減少重複**,不過物件導向可以對函式進行分類和封裝,使**可讀性好,易擴充套件。那麼我們什麼時候用到物件導向程式設計呢?我們先了解一些內容。

物件導向的程式設計其實就是: 類 + 物件

什麼是類,什麼是物件?

class person(object):   # person 就是類

def __init__(self, name):

self.name = name

p = person('bigberg') # p 就是物件

類:可以理解為他是乙個模板,比如人們在說「人」這個名詞的時候,沒人知道這個「人」具體是指那個人!

物件: 物件是乙個實際的物體,他有自己的屬性和特徵、行為。比如說 韓梅梅這樣乙個具體的人。

我們以乙個資料庫連線作為例子

# 連線資料庫

def connection(host, username, password, prort, dbname):

# 連線資料庫 host, username, password, port, dbname

pass

# 關閉連線

def close_db():

pass

exit

# 備份資料庫

def dump_func(host, username, password, prort, dbname):

connection(host, username, password, prort, dbname)

# 備份操作 host, username, password, prort, dbname

pass

close_db

# 建立資料庫

def create_db(host, username, password, prort, dbname):

connection(host, username, password, prort, dbname)

# 建立操作

pass

close_db

# 我們以函式式的方式來實現,當然可以了。可是我們在實現具體功能的時候,都要做一次連線和關閉操作

下面我們用物件導向的方法來實現一下:

class db_func(object):

def __init__(self, host, username, password, port, dbname):

self.host = host

....

def connection(self):

# 連線操作

pass

def close(self):

# 關閉操作

pass

def dump_func(self):

# 備份操作

pass

def create_db(self):

# 建立操作

pass

obj = db_func('ip','user','111111','3306','dbname')

# 連線

obj.connection()

# 備份

obj.dump_func()

# 建立

obj.create_db()

#關閉obj.close

# 在這個事例中我們只要在開始時連線資料庫,在離開時關閉資料庫,中間的過程我們可以做很多其他的操作,但是都不需要重複呼叫連線和關閉方法

我們還是以上例來做說明,在函式式程式設計中,每乙個函式在執行的時候都需要傳入相同的幾個引數,即:

dump_func(host, username, password, port, dbname)

create_db(host, username, password, port, dbname)

# 每次操作都需要寫一遍

我們去類裡面呼叫方法的時候就不要傳入引數了麼?確實不需要了,python物件導向的最主要特定就是封裝。

obj = db_func('ip','user','111111','3306','dbname') 在例項化的時候我們已經把這些引數傳給類了,把它封裝到了self中。

如圖:

在類的物件當中,不僅儲存著這個物件的引數,還有乙個隱藏的引數叫做「類物件指標」,他的作用就是告訴物件,去**找方法。

如上圖的類中每個方法都有乙個self,意思是:obj呼叫就等於 def dump_func(obj),由於實參是儲存在obj這個物件當中的,所以我們每次呼叫類中的方法時,

就沒有必要再傳一大推引數了。

看完上面的例子就的想到:如果在一些方法裡共同使用了一組變數,如果這時候使用函式式程式設計,每次呼叫方法的時候都的傳這些引數!

這時候就要想到使用物件導向:把這些變數封裝到物件中,每次呼叫的時候直接傳這個物件即可!

class person(object):

country = 'cn' # 定義乙個公有屬性

def __init__(self, name, age, gender, province, job):

self.name = name # 定義成員屬性

self.age = age

self.gender = gender

self.province = province

self.job = job

def talk(self): # 定義方法

print('person is talking.....')

def walk(self):

print('peron is walking...')

def eat(self):

print('person is eating....')

我們現在建立乙個角色的時候:

obj = person('stack', 22, 'm', 'zj', 'engineer')

如果我們每建立乙個人物型別,比較學生、教師等等,每次都有重新寫一大堆同樣的內容,是不是很麻煩的樣子?

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

物件導向程式設計

物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...

物件導向程式設計

class team def init self self.name tampa bay buccaneers bucs team print bucs.name tampa bay buccaneers 當呼叫team 函式時,會自動呼叫init函式,self是自動傳入到init中的引數,它指向當...