python物件導向思想(類與物件)
物件導向思想
1、物件導向的設計思想
物件導向是基於萬物皆物件這個哲學觀點。
2、物件導向和麵向過程的區別
程式導向
在生活中:
它是一種看待問題的思維方式,在思考問題的時候,著眼問題是怎樣一步一步解決的,然後親力親為去解決問題[類似於公司裡的執行者]。
在程式中:
程式碼是從上而下順序執行,各個模組之間的關係儘可能簡單,在功能上相對獨立,程式的流程在寫程式的時候就已經決定。
物件導向
在生活中:
它是另一種看待問題的方式,它著眼於找到一個具有特殊功能的個體,然後委託這個個體去幫你完成某件事.這更符合人類思考習慣的思想[指揮者]。
在程式中:
把資料以及對資料的操作方法放在一起,作為一個相互依存的整體–物件;
把同類的物件進行抽象出其共性,形成類;
類中大多數資料,只能用本類的方法進行處理;
類通過一個簡單的外部介面與外界發生關係,物件與物件之間通過訊息進行通訊;
程式執行的流程由使用者在使用的過程中決定;
使用物件導向思想進行開發,需要先找到具有所需功能的物件來使用,如果這個物件不存在,那麼則需要建立這麼一個具有所需功能的物件。
注意:物件導向只是一種思想,並不是一門程式語言。
區別總結
a. 都是看待問題的一種思維方式,都能解決問題;
b. 程式導向著眼於所有的事情親力親為;
c. 物件導向著眼於找到一個具有特殊功能的物件,委託這個物件實現你需要實現的功能。
python語言是物件導向的程式設計語言,類和物件是物件導向的核心。
類和物件
1、類和物件的概念
類:一個具有特殊功能的實體的集合[群體]。
物件:在一個類中,一個具有特殊功能的實體,能夠幫忙解決特定的問題,物件通常也被稱為例項。
兩者之間的關係:類用於描述某一物件的共同特徵,而物件則是類的具體存在。
舉例:
學生 張三、李四
快遞 順豐、韻達
總結:
類與物件的關係:
a.類是物件的抽象,物件是類的具體體現。
b.類也是一種資料型別,只不過是自己定義的,類似與number,string等,它本身並不佔用空間,但是它的例項[物件]是佔用空間的。
2、類的定義
格式:
class 類名(object):
類體
說明:
a.python中使用class關鍵字定義類;
b.類名只要是一個合法的識別符號即可,命名規則遵循”大駝峰式命名”【每個單詞的首字母大寫】;
c.儘量使用單個或者多個有意義的單詞連線而成
演示
# 一個簡單的類的例項
class Person():
print("hello")
3、類的設計
只需要關心3樣東西
1.事物名稱[類名]: 如人類 (Person);
2.特徵(屬性): 如身高(height) 年齡(age)等 ——>名詞;
3.行為(方法): 如跑(run) 說話(say) —————>動詞。
二十一、類中的方法和屬性
1、方法和屬性的定義
生活中描述事物的無非就是描述事物的特徵和行為。
python中用類來描述事物也是如此,前面已經定義了類,但是,如果只有類單獨存在,沒有任何意義,所以定義類其實就是定義類中的成員[成員變數和成員方法]。
在類中的變數我們稱之為成員變數,在類中的方法我們稱之為成員方法(函式)。
成員變數—>類具有的特徵 例如:人—>身高,性別,體重。
成員方法 —>類具有的行為 例如人—>吃喝玩樂。
因此,擁有相同的(或者類似)屬性和行為的物件都可以抽取出一個類。
class Persion():
#成員變數,初始值就是相當於預設值
name = ""
age = 0
height = 0
weight = 0
#成員方法
#在類的內部,使用def關鍵字來定義的一個方法
#注意:區別於普通方法,類中方法的引數必須包含引數self,且為第一個引數
#self代表類的例項(某個物件)
def run(self):
print("run")
def eat(self, food):
print("eat",food)
def sleep(self):
print("sleeping")
說明:定義了類,並在類中定義了成員變數和成員方法,但是成員變數和成員方法是如何使用的呢?
2、方法和屬性的使用
2.1、例項化物件:
前面說過,物件是實實在在的個體,負責去完成某件指定的事情。
物件的建立的過程又被稱作物件的例項化過程。
語法:
物件名 = 類名()
'''
例項化物件
格式: 物件名 = 類名()
注意: 沒有引數的時候,小括號也不能省略
'''
#例項化一個物件
pre1 = Person()
print(pre1)
print(type(per1))
print(id(per1))
per2 = Person()
print(per2)
print(type(per2))
print(id(per2))
3、物件呼叫方法和屬性
per = Preson()
'''
訪問屬性
格式:物件名.屬性名
賦值:物件名.屬性名 = 新值
'''
per.name = 'lili'
per.age = 18
per.height = 160
per.weight = 80
print(per.name, per.age, per.height, per.weight)
'''
訪問方法
格式:物件名.方法名(引數列表)
'''
per.run()
per.eat("apple")
per.sleep()
#問題:目前來看Person建立的所有物件屬性都是一樣的
per2 = Person()
print(per2.age)
per3 = Person()
print(per3.age)
總結:
訪問變數採用: 物件名.屬性名;
訪問方法採用: 物件名.方法名(引數列表)。
4、記憶體中的物件
per = Person()
說明:程式中定義Person型別的變數per實際是一個變數名,它被存放在棧記憶體中,它指向實際的Person物件,而真正的Person物件則存放在堆記憶體中。
綜合練習:
第一天開學,介紹一下你自己其中包括姓名,年齡以及愛好
#學生類
class Student():
#特徵:成員變數
self.name = ""
self.age = ""
self.hobby =""
def introduce(self,name, age, hobby):
print("大家好,我是%s,今年%d歲,愛好是%s"%(name,age, hobby))
def singsong(self):
print("娘子~啊哈")
def dance(self):
print("廣場舞跳起來...")
def lie(self):
print("我家特別窮,我小時候就一直在放牛,只有幾萬頭....")
# 類例項化
stu = Student()
# 成員方法呼叫
stu.introduce('ldc',18,'跑步')
stu.singsong()
stu.dance()
stu.lie()
輸出:
大家好,我是ldc,今年18歲,愛好是跑步
娘子~啊哈
廣場舞跳起來...
我家特別窮,我小時候就一直在放牛,只有幾萬頭....
二十二、如何檢視所有屬性和方法
class Test():
def __init__(self,name):
self.name = name
def test(self):
print('testing...')
test = Test('測試')
# 檢視所有屬性和方法
list1 = dir(test)
# 檢查例項是否有這個屬性
print(hasattr(test, 'name'),hasattr(test, 'test'),hasattr(test, 'tt'))
# 設定屬性值
setattr(test,'name','測試2')
# 獲取屬性值
print(getattr(test, 'name'))
輸出:
True True False
測試2
相關文章
- 物件導向-物件導向思想物件
- 物件導向思想物件
- Java物件導向——類與物件Java物件
- JAVA物件導向思想Java物件
- python中物件導向_類_物件的概念與定義Python物件
- python-程式導向、物件導向、類Python物件
- Java語言之物件導向—類與物件(上)Java物件
- 物件導向思想的核心概念物件
- JavaScript 物件導向實戰思想JavaScript物件
- 程式設計思想 物件導向程式設計物件
- 物件導向-抽象類物件抽象
- Perl物件導向--類物件
- Python - 物件導向程式設計 - 什麼是 Python 類、類物件、例項物件Python物件程式設計
- 問答題:物件導向的思想物件
- 課時37:類與物件:物件導向程式設計物件程式設計
- 程式導向與物件導向物件
- 物件導向與程式導向物件
- 物件導向與人類的組織物件
- Python——物件導向Python物件
- Python 物件導向Python物件
- python物件導向Python物件
- 談談我對物件導向以及類與物件的理解物件
- 物件導向類成員物件
- JAVA物件導向--抽象類Java物件抽象
- 從物件導向解讀設計思想物件
- 『無為則無心』Python物件導向 — 46、類和物件Python物件
- TypeScript與物件導向TypeScript物件
- python物件導向一Python物件
- python物件導向(一)Python物件
- python物件導向(下)Python物件
- Python物件導向(上)Python物件
- 談談“物件導向”與“程式導向”物件
- go物件導向思想:封裝、繼承、多肽Go物件封裝繼承
- 剖析ASP.NET AJAX的物件導向思想ASP.NET物件
- 物件導向程式設計,我的思想[上]物件程式設計
- 物件導向程式設計,我的思想[下]物件程式設計
- PHP 物件導向 (十一)反射類PHP物件反射
- 物件導向 -- 類的組合物件