面向過程程式設計(窮人的思想):一遇到問題馬上想到的是怎麼寫**把這個功能實現(邏輯)
函式式程式設計(小資的思想):一遇到問題馬上想到有沒有乙個函式已經把這個功能實現了,如果有就拿過來用,沒有就定義乙個有這個功能的函式(函式)
物件導向程式設計(富豪的思想):一遇到問題馬上想到有沒有乙個類中有這個方法能夠把這個功能實現,如果沒有就建立這個類(類和物件)
a =
10b =
20# 求變數a和b的和
print
(a + b)
類就是擁有相同屬性和相同功能的物件的集合(抽象)
物件就是類的例項(具體)
從生活的角度:
如果人是類, 余婷就是物件,駱老師是另乙個物件
如果杯子是類,我桌上的這個杯子就是物件
語法:class 類名:
類的說明文件
類的內容(包含屬性和方法)
說明:class - 關鍵字
類名 - 程式設計師自己命名
要求:識別符號,不能是關鍵字
規範:駝峰式命名,並且首字母大寫;見名知義;不適用系統的函式名、類名、模組名
類的說明文件 - 用""""""引起來的說明性文字,主要說清楚類提供了哪些屬性和哪些功能
類的內容 - 主要包含屬性和方法(定義在類中的函式叫方法)
# pep8命名規範
student_name =
'張三'
# 駝峰式命名
studentname =
'李四'
# 定義乙個人類
class
human
:"""人類"""
defeat
(self)
:print
('人類在吃飯'
)def
sleep
(self)
:print
('人類睡覺!'
)class
servant
:"""傭人類"""
defwash
(self)
:print
('洗衣服'
)def
cook
(self, food)
:print
(f'做'
)
語法:
類名()
說明:類名 - 是已經定義好的類的類名
p1 = human(
)# 建立人類的物件p1
p2 = human(
)print
(p1)
print
(p2)
s1 = servant(
)# 建立傭人類的物件s1
print
(s1)
s2 = servant(
)s1.wash(
)s2.wash(
)s1.cook(
'麵條'
)s2.cook(
'包子'
)
類中的方法分為三種:物件方法、類方法、靜態方法
1)物件方法
怎麼定義:直接定義在類中函式就是物件方法
特點:自帶引數self(self在通過物件呼叫的時候不用傳參, 系統會自動將當前物件傳給self),誰呼叫指向誰
怎麼呼叫:用物件去呼叫(物件.方法名())
2)類方法
怎麼定義: 定義函式前加裝飾器 @classmethod
特點:自帶引數cls(cls在通過類呼叫的時候不用傳參,系統會自動將當前類傳給cls)
怎麼呼叫:用類呼叫(類.方法名())
3)靜態方法
怎麼定義: 定義函式前加裝飾器 @staticmethod
特點:沒有預設引數
怎麼呼叫:用類呼叫
4)物件方法、類方法和靜態方法怎麼選:
如果實現函式的功能需要用到物件的屬性,就選物件方法
class
dog:
# eat是物件方法
defeat
(self)
:# self = dog1
print
(f'self:'
)print
('狗啃骨頭'
)# count是類方法
@classmethod
defcount
(cls)
:# dog能做的cls都能做
print
(f'cls:'
) dog2 = dog(
) dog3 = cls(
)print
(dog2, dog3)
print
('狗的數量是: 100'
) @classmethod
deffunc
(cls)
:print
('類方法'
)# func2是靜態方法
@staticmethod
deffunc2()
:print
('靜態方法'
)# 建立物件
dog1 = dog(
)print
(f'dog1:'
)# 用物件呼叫物件方法
dog1.eat(
)# 用類呼叫類方法
dog.count(
)# 用類呼叫靜態方法
dog.func2(
)print
('*************************注意:********************=='
)# 從本質上講,類中的所有的方法都可以用物件和類呼叫,但是不能這麼做
dog.eat(12)
# 如果用類呼叫物件方法,self就會變成普通的引數,沒有存在的價值
dog1 = dog(
)dog1.count(
)# 用物件呼叫類方法的時候cls指向的還是類(不會指向物件)
dog1.func2(
)dog.func2(
)
構造方法: 函式名和類名是一樣的,用來建立物件的方法就是構造方法(python中的構造方法,在定義類的時候系統已經自動建立好了)
__init__方法又叫初始化方法,用來在建立物件的是對物件進行初始化操作的。
當我們通過類建立物件的時候,系統會自動呼叫__init__方法來物件建立出來的物件進行初始化。
呼叫構造方法建立物件的時候需不需要引數,需要幾個,看被自動呼叫的__init__
class
person
:def
__init__
(self, a, b)
:print
('初始化方法:'
, a, b)
print
(f'self:'
)p1 = person(10,
20)print
(p1)
# p2 = person(a=100, b=200)
# p2 = person()
"""def person(*args, **kwargs):
物件 = 申請空間建立物件
物件.__init__(*args, **kwargs)
return 物件
"""
物件屬性: 物件屬性的值會因為物件不同而不一樣
a.定義在init方法中
b.以 self.屬性名 = 值
c.通過 物件.屬性名 的方式使用屬性
class
person
:def
__init__
(self, name1, age1, gender1=
'男')
: self.name = name1
self.age = age1
self.gender = gender1
defeat(self)
:print
(f'吃飯'
)p1 = person(
'小明',1
)print
(p1.name, p1.age, p1.gender)
p2 = person(
'小花',3
,'女'
)print
(p2.name, p2.age, p2.gender)
p2.name =
'大花'
print
(p2.name)
# p1.eat()
p2.eat(
)
python 物件導向(上)
1.物件導向的思想 面向過程程式設計最易被初學者接受,其往往用一長段 來實現指定功能,開發過程的思路 是將資料與函式按照執行的邏輯順序組織在一起,資料與函式分開考慮。例如 菜鳥買電腦 1 自己買 在網上查詢資料 根據自己預算和需求定電腦的型號 macbook 15 頂配 1w8 去市場找到蘋果店各種...
python物件導向上
我們目前學習的都是python的內建物件,但是內建物件並不都能滿足我們的需求,所以我們在開發中經常要自定義一些物件 類簡單理解它就是相當於乙個圖紙,在程式彙總我們需要根據類來建立物件。類就是物件的圖紙 我們也稱物件是類的例項 instance 可呼叫isinstan 例項物件,類名 判斷是否為該類 ...
物件導向上
self引數 特殊方法 類的建構函式 object 類名 語法 class 類名 父類 塊 class myclass pass my myclass print type my main student object at 0x0000019ae5603fa0 my是myclass類建立出來的乙個...