3

我可以创建一个cls1继承自cls.

>>> class cls(object):
...     def func(self,arg):
...         print 'func',arg
>>> def func1(self):
...     print "func 1 of cls1"
>>> def func2(self):
...     print "func2 of cls1"
>>> d=dict(func1=func1,func2=func2)
>>> cls1=type('cls1',(cls,),d)

一切都按预期工作:

>>> obj=cls1()
>>> obj.func(7)
func 7

我也可以替换cls1FOO

>>> cls1=type('FOO',(cls,),d)

这给了我:

'cls1': <class '__main__.FOO'>,

这(改变__name__变量)是否改变了行为cls1以及如何(一切仍然正常)?

4

1 回答 1

2

你只是在改变你的班级的名字,所以只有当你以某种方式依赖这个名字时才重要:

>>> type(obj)
__main__.FOO
>>> isintance(obj, cls1)
True

效果很好,但是酸洗(我认为取决于名称)呢?

比如改名前泡菜obj没问题。以后就不行了。

PicklingError: Can't pickle <class '__main__.FOO'>: it's not found as __main__.FOO
于 2012-09-12T14:50:32.357 回答