動態建立類例項

2022-02-23 11:58:12 字數 1511 閱讀 7487

python中要建立乙個類的例項,要首先匯入該類或者該類所屬的模組,例如:

import

mymodule

myobject 

=mymodule.myclass()

或者from

mymodule 

import

myclass

myobject 

=myclass()

如果要在程式中動態地建立類例項,也一樣要分兩步走,例如:m =

__import__('

mymodule')

c =getattr(m, 

'myclass')

myobject 

=c()

但是要注意:如果myclass並不在mymodule的自動匯出列表中(__all__),則必須顯式地匯入,例如:m =

__import__('

mymodule

', globals(), locals(), [

'myclass'])

c =getattr(m, 

'myclass')

myobject 

=c()

若要封裝的規範一些,可以這樣來做:

code

1class

activator:

2'''

本類用來動態建立類的例項

'''3

@staticmethod

4def

createinstance(class_name, 

*args, 

**kwargs):

5'''

動態建立類的例項。67

[parameter]

8class_name  - 類的全名(包括模組名)

9*args       - 類構造器所需要的引數(list)

10*kwargs     - 類構造器所需要的引數(dict)

1112

[return]

13動態建立的類的例項

1415

[example]

16class_name = 'knightmade.logging.logger'

17logger = activator.createinstance(class_name, 'logname')

18'''

19(module_name, class_name) 

=class_name.rsplit('.

', 1)

20module_meta 

=__import__

(module_name, globals(), locals(), [class_name])

21class_meta 

=getattr(module_meta, class_name)

22object 

=class_meta(

*args, 

**kwargs)

23return

object

24

C 動態建立類的例項

c 動態 建立類的例項,如果對效能要求不是很高,而且需要動態 建立類的例項的時候可以考慮使用以下的方法 1.定義兩個類 基類 public class basebusiness 子類 public class samplebusiness basebusiness 2.動態 建立類的例項 程式集名稱...

DevExpress 動態建立例項化類 (xpo)

使用xpo devexpress 時動態建立乙個持久化類。這樣方便訪問資料庫。使用devexpress 控制項 xpo xpobject 持久化物件 資料庫訪問 表 xpobject classprogram while xpodefault.session.getobjectbykey mycla...

動態建立Struct例項

pair struct.new token,word first word pair.new direction north second word pair.new verb go 定義乙個陣列,儲存這個新建的struct sentence first word,second word p sen...