python基礎 物件導向(一)概念的引入

2022-07-11 05:27:26 字數 2704 閱讀 4861

先看需求:如何描述一條狗?一種是這條狗的獨有特徵(如名字,性別,類別),還有所有狗都有的行為(吃喝拉撒睡),如何實現呢,獨有特徵肯定用dict,行為當然是用函式來完成。

dog1=

person1=

defeat(dog):

print('

%s在吃屎

'%dog['

name'])

defjiao(dog):

print('

%s 在叫

'%dog['

name'])

jiao(dog1)

但是會有乙個問題,人person1,他也可以呼叫狗的def eat(),def jiao()。如何避免這個問題呢?難道每次呼叫函式都用 if 判斷?

其實根據函式的作用域,可以把函式放到乙個大的函式裡邊,做成子函式,那麼外部的人就呼叫不到了

person1 =

defdog():

defeat(dog):

print('

%s在吃屎

' % dog['

name'])

defjiao(dog):

print('

%s 在叫

現在還有個問題,就是狗被寫死了,名字,性別,類別等都被寫死了!如何不寫死,當然是根據使用者的引數傳入來寫。

person1 =

defdog(name, gender, type):

def eat(dog): #

需要字典dog

print('

%s在吃屎

' % dog['

name'])

def jiao(dog): #

需要字典dog

print('

%s 在叫

' % dog['

name'])

dog1 =

return

dog1

d1 = dog('

旺財', '

母', '藏獒'

)d1[

'eat

'](d1) #

注意,需要的引數是dict,傳的引數是自己,返回的就是dog1的dict。

一般獨有的特徵會放到乙個init初始化函式裡面

**就被優化成這樣

person1 =

defdog(name, gender, type):

def eat(dog): #

需要字典dog

print('

%s在吃屎

' % dog['

name'])

def jiao(dog): #

需要字典dog

print('

%s 在叫

' % dog['

name'])

definit(name,gender,type):

dog1 =

return

dog1

return

init(name,gender,type)

d1 = dog('

旺財', '

母', '藏獒'

)d1[

'eat

'](d1) #

注意,需要的引數是dict,傳的引數是自己,返回的就是dog1的dict。

從上面可以看出來:

1.類:是具有相同屬性的一類實物的集合。

2.物件:物件是類當中具體的某個物體。

再來乙個需求:如何描述乙個學校?特徵(名字,位址,私立還是公立),動作(招生,考試),根據上面的例子**應該可以一步到位了。

def

school(name,addrs,type):

definit(name,addrs,type):

school1=

return

school1

defzhaosheng(school):

print('

%s學校正在招生

'%school['

name'])

defkaoshi(school):

print('

%s學校正在考試

'%school['

name'])

return

init(name,addrs,type)

school1=school('

北大','

北京','

私立')['

kaoshi

'](school('北大','北京','私立')) #傳的是自己self

上面用函式def完成了乙個類,說明

物件導向設計:是將一類具體實物的資料和動作整合到一起。不一定非得用class,用函式def也可以實現

物件導向程式設計:用class+例項/物件的方法去實現物件導向設計。如c++有很多class

物件導向設計模式一 概念

每乙個模式描述了乙個在我們周圍不斷重 生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次 地使用該方案而不必做重複勞動 christopher alexander 做法 應對變化,提高復用。目的 乙個系統總是趨於穩定與變化之間,根據變化點選擇合適的設計模式,增強系統的靈活性。依據 物件導向...

Spring基礎(一) 概念

t1 spring中bean的生命週期 total 1.先要通過反射呼叫bean的構造器例項化bean 2.再通過反射注入bean的屬性 3.若實現裡beannameaware介面,根據bean的id,setbeanname 4.若實現了beanfactoryaware介面,呼叫setbeanfac...

物件導向基礎 概念

類 類時模子,確定物件將會擁有的特徵 屬性 和行為 方法 物件 看的見,摸得到,具體的,特指的 區別 類是抽象的概念,僅僅是模板,物件是乙個你能夠看得到 摸得到的具體實體 舉例 桌子 類 這個桌子 物件 值得注意的是字段與屬性之間的關係 字段 在類中定義的變數,用來儲存描述類的特徵的值 public...