python - 在运行时创建 Python 类的最不坏方法是什么?

标签 python class

我正在使用一个接受类作为输入的 ORM,我需要能够为其提供一些动态生成的类。目前,我正在做类似这个人为示例的事情:

def make_cls(_param):
   def Cls(object):
       param = _param
   return Cls

A, B = map(make_cls, ['A', 'B'])

print A().foo
print B().foo

虽然这工作正常,但感觉有点不对劲:例如,两个类都打印为 <class '__main__.Cls'>在回复上。虽然名称问题不是什么大问题(我想我可以通过设置 __name__ 来解决它),但我想知道是否还有其他我不知道的事情。 所以我的问题是:是否有更好的方法来动态创建类,或者我的示例已经基本没问题了?

最佳答案

什么是类?它只是 type 的一个实例。例如:

>>> A = type('A', (object,), {'s': 'i am a member', 'double_s': lambda self: self.s * 2})
>>> a = A()
>>> a
<__main__.A object at 0x01229F50>
>>> a.s
'i am a member'
>>> a.double_s()
'i am a memberi am a member'

来自doc :

type(name, bases, dict)

Return a new type object. This is essentially a dynamic form of the class statement.

关于python - 在运行时创建 Python 类的最不坏方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234608/

相关文章:

python - Luigi中如何只允许特定机器运行任务

python - 阅读 Python 中的每四行

python - python-3.6 中带有 'f' 前缀的字符串

c# - 从对象数组中删除重复项

c# - 返回类的实例时,是否返回所有属性?

python - 在 Python 中获取相差 N 或更多的最小坐标

java - Java 中实现系统独立数据报通信的 3 个类?

c++ - 如何避免为未使用的属性分配内存

swift - 从 GameScene 类中的节点创建子类

python - 在通用 View 中验证用户?