類的方法 變數和繼承

2021-09-28 22:58:57 字數 3645 閱讀 3802

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 訪問修飾符 資料型別 變數名 如何訪問 類名.變數名 物...