Python中動態新增類的屬性或成員函式

2021-04-15 09:12:28 字數 930 閱讀 6569

python中動態新增類的屬性或成員函式

我們有時需要讓類動態的新增屬性或方法,比如我們在做外掛程式時就可以採用這種方法。用乙個配置檔案指定需要載入的模組,可以根據業務擴充套件任意加入需要的模組。

在這方面可以參考class

winbas(bas):

def__init__

(self):

self.

__baslist={}

self.

__init_modules

()pass

def__init_modules

(self):

import

modplugs

form 

inmodplugs.

__moduleset__

:mh 

=__import__('

modules.'+

m)#+ '.' + m)

ma =

getattr(mh, m)

#+ '.' + m)

ma =

getattr(ma, m)

setattr(self.

__class__

, m, ma)

modplugs.py是模組配置檔案如下:

__moduleset__=[

'bas_getuserlist',

]

然後建立目錄modules下面建立乙個空的__init__.py檔案,把目錄變為乙個包,在modules目錄下建立真正的bas_getuserlist實現:bas_getuserlist檔案中有個bas_getuserlist函式如下:

defbas_getuserlist(self, strs):

return

[0, strs]

這樣winbas類就可以動態加入了bas_getuserlist函式。

Python動態新增屬性

class student object classmethod修飾的屬性可以通過類變數和類例項變數直接呼叫 因為在這兩種情況下都可以將類變數繫結到 classmethod修飾的方法的第乙個引數上 classmethod def eat cls print eating.當類的例項動態新增屬性時 c...

python中動態新增屬性和方法

動態新增屬性 就是這個屬性不是在類定義的時候新增的,而是在程式執行過程中新增的,動態新增屬性有兩種方法,第乙個是直接通過物件名.屬性名,第二個是通過setattr新增 1.物件.屬性 class person object def init self,name self.name name p pe...

Python的動態新增屬性與方法

我們都知道python是動態語言。動態?動態在 呢?假如c語言定義了乙個類,我們在類固定的情況下,可以不可以為這個類或者這個類的物件新增物件呢?答案肯定是否定的 python就可以。下面我們來看看。一.動態新增屬性 1.動態新增物件屬性 我們來新建乙個類。我們建立了乙個person類,用person...