物件導向程式設計 ——object oriented programming
簡寫oop
類
和物件
是物件導向程式設計的兩個核心概念
類
是對一群具有相同特徵
或者行為
的事物的乙個統稱,是抽象的。
類
中定義了什麼屬性和方法
,物件
中就有什麼屬性和方法
class 類名:
def 方法1(self, 引數列表):
pass
def 方法2(self, 引數列表):
pass
注意:當乙個類定義完成之後,要使用這個類來建立物件,語法格式如下:類名
的 命名規則 要符合大駝峰命名法
物件變數 = 類名()
需求
型別屬性行為人
姓名吃身高喝
體重玩分析
定義乙個人類person
定義三個方法eat
、drink
、play
按照需求 —— 不需要定義屬性
class person():
""" 這是乙個人類 """
def eat(self):
print("吃東西")
def play(self):
print("玩遊戲")
def drink(self):
print("喝飲料")
tony = person()
tony.drink()
tony.eat()
tony.play()
引用概念的強調在物件導向開發中,引用
的概念是同樣適用的!
人除了行為之外,還應該有屬性,屬性可以通過類方法傳入:
class person():
def eat(self, name):
print("{}吃東西".format(name))
def drink(self):
print("{}喝飲料".format(name))
p = person()
p.eat()
p.drink()
class person():
def eat(self):
self.name = 'tom'
print("{}吃東西".format(self.name))
def drink(self):
print("{}喝飲料".format(self.name))
p = person()
p.eat()
p.drink()
當使用類名()
建立物件時,會 自動 執行以下操作:
為物件在記憶體中 分配空間 —— 建立物件
為物件的屬性 設定初始值 —— 初始化方法(init
)
這個 初始化方法 就是__init__
方法,__init__
是物件的內建方法
__init__
方法是 專門 用來定義乙個類 具有哪些屬性的方法!
在person
中增加__init__
方法,驗證該方法在建立物件時會被自動呼叫
class person:
"""這是乙個人類"""
def __init__(self):
print("初始化方法")
class person:
def __init__(self):
print("這是乙個初始化方法")
# 定義用 person 類建立的物件都有乙個 name 的屬性
self.name = "tom"
def eat(self):
print("%s 吃東西" % self.name)
# 使用類名()建立物件的時候,會自動呼叫初始化方法 __init__
tom = person()
tom.eat()
在開發中,如果希望在 建立物件的同時,就設定物件的屬性,可以對__init__
方法進行 改造
把希望設定的屬性值,定義成__init__
方法的引數
在方法內部使用self.屬性 = 形參
接收外部傳遞的引數
在建立物件時,使用類名(屬性1, 屬性2...)
呼叫
class person:
def __init__(self, name):
print("初始化方法 %s" % name)
self.name = name
...tom = person("tom")
...tony = person("tony")
...
由哪乙個物件呼叫的方法,方法內的self
就是哪乙個物件的引用
改造**如下:
class person:
def __init__(name):
self.name = name
def eat(self):
print("{} 吃東西".format(self.name))
案例:使用之前定義的爬蟲類,完成抓取資料的功能(理清楚邏輯,不需要**實現)
定義乙個完成資料抓取的類方法(spider
)
在類方法中實現對資料的抓取、解析、儲存
實現整個抓取的流程
在python
中可以使用以下兩個方法驗證:
在ipython
中輸入物件之後輸入乙個.
,然後按下tab
鍵,ipython
會提示該物件能夠呼叫的方法列表
使用內建函式dir
傳入乙個物件,可以檢視物件內的所有屬性及方法
序號方法名
型別作用
01__new__
方法建立物件時,會被自動呼叫
02__init__
方法物件被初始化時,會被自動呼叫
03__del__
方法物件被從記憶體中銷毀前,會被自動呼叫
04__str__
方法返回物件的描述資訊
注意:__str__
方法必須返回乙個字串
class person:
def __new__(cls, *args, **kwargs):
print("我正在被建立")
cls.__instance = super().__new__(cls)
return cls.__instance
def __init__(self, name):
self.name = name
print("%s 來了" % self.name)
def __del__(self):
print("%s 去了" % self.name)
def __str__(self):
return "我是:%s" % self.name
tom = person('tom')
print(tom)
物件導向 類與物件
物件導向是相對於面向過程而言的,具體的來說,比如 我們想要吃一頓午飯,我們親自買菜,洗菜.切菜,炒菜,煮飯,這樣做成一桌菜就叫面向過程,也就是說整個過程 你都親自完成,而 物件導向呢?點外賣 點一桌子菜和公尺飯 不管他咋做出來的 面向過程程式設計 就是 我們想要實現乙個功能 直接去呼叫別人寫好的功能...
物件導向(類與物件)
世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人類文明的發展,人類站在不同的角度總結出了不同的種類,比如 人類 動物類 植物類等概念。也就說,物件是具體的存在,而類僅僅只是乙個概念,並不真實存在,比如你無法告訴我人類 具體指的是哪乙個人這與函式的使用是類似的 先定義函式,後呼叫函式,類也是一樣...
物件導向 類與物件
1.物件導向的三大特徵 1 封裝性 2 繼承性 3 多型性 物件導向最大的特徵 可以對現實生活進行抽象 2.基本概念 1 類 指共性的概念 2 物件 指的是乙個具體的,可以使用的事物。通俗來說,類就是產生物件的藍圖。物件的所有行為,一定要在類中進行完整的定義。類中的組成 屬性 方法 class 類名...