ayc*_*dee 82
您可以使用type来动态创建新类,然后实例化它.像这样:
>>> t = type('test', (object,), {})()
>>> t
<__main__.test at 0xb615930c>
键入的参数是:类名,基类的元组和对象的字典.其中可以包含函数(对象的方法)或属性.
你实际上可以缩短第一行
>>> t = type('test', (), {})()
>>> t.__class__.__bases__
(object,)
因为默认情况下,type会创建从object继承的新样式类.
type在Python中用于元编程.
但是如果你只想创建一个对象实例.然后,只需创建一个实例.像lejlot建议的那样.
创建这样的新类的实例具有可能有用的重要区别.
>>> a = object()
>>> a.whoops = 1
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'whoops'
在哪里:
>>> b = type('', (), {})()
>>> b.this_works = 'cool'
>>> 
Vla*_*den 57
是的,在Python 3.3 中添加了SimpleNamespace
与object不同,使用SimpleNamespace可以添加和删除属性.如果使用关键字参数初始化SimpleNamespace对象,则会将这些对象直接添加到基础命名空间.
例:
import types
x = types.SimpleNamespace()
x.happy = True
print(x.happy) # True
del x.happy
print(x.happy) # AttributeError. object has no attribute 'happy'
Wil*_*ill 42
创建一个空(-ish)对象的一种简单,不太可怕的方法是利用函数是Python中的对象这一事实,包括Lambda函数:
obj = lambda: None
obj.test = "Hello, world!"
例如:
In [18]: x = lambda: None
In [19]: x.test = "Hello, world!"
In [20]: x.test
Out[20]: 'Hello, world!'
lej*_*lot 13
你对"空物"是什么意思?上课的实例object?你可以简单地跑
a = object()
或者你的意思是初始化为null引用?然后你可以使用
a = None
你在问题中说过,但由于没有答案用代码提到它,这可能是最干净的解决方案之一:
class Myobject:
    pass
x = Myobject()
x.test = "Hello, world!"  # working