物件導向基礎語法
1--dir內建函式
。--在python中物件幾乎是無所不在的,之前學習的變數、資料、函式都是物件
。--在python中可以使用以下兩個方法驗證:
--在識別符號/資料後輸入乙個. ,然後按下tab鍵,ipyhton會提示該物件能夠呼叫的方法列表
--使用內建函式dir傳入識別符號/資料,可以檢視物件內的所有屬性與方法
方法名型別
作用__new__
方法建立物件時,會被 自動呼叫
__init__
方法物件初始化時,會 自動 被呼叫
__del__
方法物件被從記憶體中銷毀前,會 自動 被呼叫
__str__
方法返回物件的描述資訊,print函式輸出使用
2--定義簡單的類(只包含方法)
。--物件導向是更大的封裝,在乙個類中封裝多個方法,這樣通過這個類建立出來的物件,就可以直接呼叫這些方法了
。--定義只包含方法的類
--在python中要定義乙個值包含方法的類
語法格式:
class 類名:
def 方法1(self,引數列表):
pass
def 方法2(self,引數列表):
pass
--方法的定義格式和之前學習過的函式幾乎一樣
--區別在於第乙個引數必須是self,self下面介紹
**注意:類名的命名規則要符合大駝峰命名法
2.1--建立物件
。--當乙個類定義完成之後,要使用這個類來建立物件
語法格式:
物件變數=類名()
練習:#建立類
class cat:
def eat(self):
print("吃東西")
def drink(self):
print("喝水")
#建立物件
tom=cat()
#呼叫方法
tom.eat()
。--引用概念的強調 (在物件導向開發中,引用的概念是同樣適用)
--在python中使用類建立物件之後,tom變數中仍然記錄的是物件記憶體中的位址
--也就是tom變數引用了新建的貓物件
--使用print輸出物件變數,預設情況下,是能夠輸入這個變數引用的物件是由哪乙個類建立的物件,以及在記憶體中的位址(十六進製制表示)
--在計算機中,通常使用十六進製制表示記憶體位址
--十進位制和十六進製制都是用來表達數字的,只是表達的方式不一樣
--十進位制和十六進製制的數字之間可以來回轉換
--%d可以以十進位制輸出數字
--%x可以以十六進製制輸出數字
例:print(tom)(接上)
結果:<_main_.cat object at 0x7fdbd8326b00>
3--類中的方法中的self引數
。--在python中,要給物件設定屬性,非常的容易,但是不推薦使用
--因為:物件屬性的封裝應該封裝在類的內部
。--只需要在 類的外部的**中直接通過 . 設定乙個屬性即可
例:(接上)
tom.name="tom"
其中:其他用相同的類進行建立的物件,若沒有進行屬性設定,是沒有該屬性的
3.1--利用self在類封裝的方法中輸出物件的屬性
。--由哪乙個對物件呼叫的方法,方法內的self就是哪乙個物件的引用
。--在類封裝的方法內部,self就表示當前呼叫方法的物件自己
。--在方法內部:
--可以通過self,訪問物件的屬性
--也可以通過self,呼叫其他的物件方法
例:class cat:
def eat(self):
#self--哪乙個物件呼叫該函式(eat),self就是哪乙個物件的引用,就可以直接呼叫對應物件的屬性
print("%s 吃東西" %self.name)
def drink(self):
print("%s 喝水" %self.name)
#建立物件
tom=cat()
#設定屬性
tom.name="tom"
#呼叫方法
tom.eat()
。--在類的外部,通過變數名,訪問物件的屬性和方法
。--在類封裝的方法中,通過self訪問物件的屬性和方法
4--類中的初始化方法
。--在類的外部給物件增加屬性--會存在問題
--tom=cat()
tom.drink()
tom.eat()
tom.name="tom"
print(tom)
程式報錯:『cat』物件沒有『name』屬性
--如果在執行時,沒有找到屬性,程式會報錯
。--物件應該包含那些屬性,應該封裝在類的內部
。--初始化方法
--當使用類名()建立物件時,會自動執行以下操作:
-為物件在記憶體中分配空間--建立物件
-為物件的屬性設定初始值--初始化方法(init)
--這個初始化方法就是__init__方法,__init__物件的內建方法
--在cat中增加__init__方法,驗證該方法在建立物件時會被自動呼叫
class cat:
"""這是乙個貓類"""
def __init__(self):
print("初始化方法")
。--在初始化方法內部定義屬性
--在__init__方法內部使用 self.屬性的初始值 就可以定義屬性
--定義屬性之後,再使用cat類建立物件,都會擁有該屬性
5--改造類中的初始化方法--初始化的同時設定初始值
。--在開發中,如果希望在建立物件的同時,就設定物件的屬性,可以對__init__方法進行改造
。--步驟
--把希望設定的屬性值,定義成__init__方法的引數
--把方法內部使用 self.屬性=形參 接收外部傳遞的引數
--在建立物件時,使用類名(屬性1,屬性2...)呼叫
class cat:
def __init__(self,name):
print("初始化方法 %s" % name)
self.name=name
...tom=cat("tom")
6--類中的內建方法和屬性
。--__del__方法
--當使用 類名() 建立物件時,為物件分配空間後,自動呼叫__init__方法
--當乙個物件被從記憶體中銷毀前,會自動呼叫該方法
。--應用場景
--__init__改造初始化方法,可以讓建立物件更加靈活
--__del__如果希望在物件被銷毀前,再做一些事情,可以考慮一下__del__方法
。--生命週期
--乙個物件呼叫 類名() 建立,生命週期開始
--乙個物件的__del__方法一旦被呼叫,生命週期結束
--在物件的生命週期內,可以訪問物件屬性,或者讓物件呼叫方法
。--__str__方法
--在python中,使用 print 輸出物件變數,預設情況下,會輸出這個變數引用的物件 是由哪乙個類建立的物件,以及在記憶體中的位址(用十六進製制表示)
--如果在開發中,希望使用 print 輸出物件變數是,能夠列印自定義的內容,就可以利用 __str__ 這個內建方法了
**注意:__str__方法必須返回乙個字串
class cat:
def __init__(self,name):
self.name=name
def __del__(self):
print("%s 刪除" %self.name)
def __str__(self):
return "我是貓:%s" %self.name
tom=cat("tom")
print(tom)
結果:我是貓:tom
tom刪除
python學習筆記 記錄一些內部函式
檢視可迭代物件 列表,元祖,字串等 中的元素都是true 即非 空 0 false all iterable 全部元素都不為空,非0,true 其實就是物件做與運算 all true 這個比較特殊 all all 空元組和空列表為true all 0 flase all 1,2,3,4,5 true...
Python內部函式
數學相關的函式 匯入數學的模組 import math floor 向下取整 result math.floor 6.2 print result ceil 向上取整 result math.ceil 5.5 print result round 四捨五入 注意 不是math中的函式,系統自帶 n....
python 內部函式
1.lambda lambda其實就是一條語句,lambda x body。x是lambda函式的引數,引數可以有任意多個 包括可選引數 body是函式體,只能是乙個表示式,並且直接返回該表示式的值。f lambda x x 1 f 2 3 lambda x,y x y 2,3 52.filter ...