1. 類方法
定義:使用裝飾器@classmethod
。第乙個引數必須是當前類物件,該引數名一般約定為「cls
」,通過它來傳遞類的屬性和方法(不能傳例項的屬性和方法)
呼叫:例項物件和類物件都可以呼叫
應用場景:需要站在類的角度執行某個行為時,那麼就應該定義為類方法
2. 例項方法
呼叫:只能由例項物件呼叫
3. 靜態方法
定義:使用裝飾器@staticmethod
。引數隨意,沒有「self
」和「cls
」引數,但是方法中不能使用類或例項的任何屬性和方法
呼叫:例項物件和類物件都可以呼叫
應用場景:存放邏輯**,內部不需要引用類屬性和例項屬性
4. 私有屬性
單下劃線開頭:_attr
雙下劃線開頭:__attr
宣告為私有屬性:宣告為私有屬性,那麼該說明屬性是類私有的,僅限於在類裡面使用,不要在類外面去呼叫(實際上類外面可以訪問)
1. 什麼是繼承,繼承有什麼用?
物件導向程式設計中有乙個重要的思想叫做繼承,子類通過繼承可以獲得父類的屬性和方法,被繼承的類叫做父類(基類),繼承的類叫做子類。
作用:子類通過繼承可以獲得父類的屬性和方法,提高開發的效率和**的復用率。
class
myclass
:# 類屬性
attr =
100def
__init__
(self, name, age)
:# 例項屬性
self.name = name
self.age = age
# 例項方法
deffunc1
(self)
:print
('例項方法1'
)# 類方法
@classmethod
defc_func
(cls)
:print
('類方法c_func'
)
2.呼叫重名的父類方法
重寫父類的方法:父類有乙個方法,繼承之後又定義了乙個和父類方法名相同的方法;直接呼叫自身重寫之後的方法,不會去父類中找
在方法中呼叫父類重寫前的方法:
方式一:父類名.方法名(self)
方式二:super().方法名()
__new__
方法:建立並返回乙個新的物件
class
obj(
object):
pass
o = obj(
)# 通過類名建立物件
print
(o)
執行結果:
<__main__.obj object at 0x0022dc90
>
3. 屬性動態設定(反射機制)
1). 設定屬性:setattr(object , name , value)
示例:
# 給物件動態設定屬性:引數(物件,屬性名,屬性值)
setattr
(case1,
'age',98
)# 等同於case1.age = 98
print
(case1.age)
執行結果:
98
示例:
class
cases
:def
__init__
(self, name)
: self.name = name
case1 = cases(
'1')
datas =
for k, v in datas.items():
# print(k, v)
setattr
(case1, k, v)
print
(case1.url)
執行結果:
www.baidu.com
2).獲取屬性:getattr(object , name , default)
示例:
class
cases
:def
__init__
(self, name)
: self.name = name
case1 = cases(
'1')
datas =
for k, v in datas.items():
print
(k, v)
res =
getattr
(case1,
'name'
)print
(res)
執行結果:
13).刪除屬性:delattr(object , name)
示例:
class
cases
:def
__init__
(self, name)
: self.name = name
case1 = cases(
'1')
datas =
for k, v in datas.items():
print
(k, v)
# setattr(case1, k, v)
# print(case1.url)
# 刪除屬性
delattr
(case1,
'name'
)# 獲取屬性值
res =
getattr
(case1,
'name'
)print
(res)
執行結果:
traceback (most recent call last)
: file "e:/pycharmprojects/py23_class/py23_11day/zy_11day.py"
, line 52,in
res =
getattr
(case1,
'name'
)attributeerror:
'cases'
object has no attribute 'name'在python中,萬物皆物件,包括:
函式:函式物件
基本的資料:init資料型別的物件、列表型別的物件、字串物件、元組物件、字典物件
類:類物件
類建立出來的物件:例項物件
模組:模組物件
包:包物件
Python 類繼承之類變數和類方法的用法
本頁主要討論python中的類繼承時的類變數和類方法的用法。在閱讀相關 時,一定要切記當前 self 是誰,型別是什麼,繼承關係是什麼,mro是什麼。這樣才能準確把握 的呼叫流程。示例 注意在類方法 get name 對於 displayer mysubclass 的例項會列印不同的值 class ...
例項變數和類變數 類方法和例項方法
類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。類變數也稱為static變數,靜態變數 那麼,類變數和例項變數有什麼區別呢?我們知道,乙個類通過使用new運算子可以建立多個不同的物件,這些物件將被分配...
類變數和類方法
什麼是類變數 類變數也叫靜態變數或靜態屬性,是該類的所有物件共享的變數,任何乙個該類的物件去訪問它時,取到的都是相同的值,同樣任何乙個類的物件去修改它時,修改的都是同乙個變數。如何定義 訪問修飾符 static 資料型別 變數名 static 訪問修飾符 資料型別 變數名 如何訪問 類名.變數名 物...