是否可以使用python的类型函数动态创建类级变量?

时间:2015-12-31 01:32:40

标签: python

鉴于课程

&

可以使用class A(object): def __init__(self): self.x = 'hello' 动态重新创建。

type

是否可以使用类型创建类级变量?

type('A', (object,), {'x': 'hello'})

1 个答案:

答案 0 :(得分:2)

In [154]: A = type('A', (object,), {'my_class_variable':'hello'})

In [155]: A.my_class_variable
Out[157]: 'hello'

在您的第一个示例中,type('A', (object,), {'x': 'hello'})A.x是一个类属性,也不是实例属性。

要使用您发布的__init__制作课程,首先需要定义__init__函数,然后将__init__作为类属性:

In [159]: def __init__(self):
   .....:       self.x = 'hello'
   .....: 

In [160]: A2= type('A', (object,), {'__init__':__init__})

In [161]: 'x' in dir(A2)   
Out[161]: False            # x is not a class attribute

In [162]: 'x' in dir(A2()) 
Out[162]: True             # x is an instance attribute