如何在Python中动态创建对象?我经常想把信息传递给我的Django模板,格式如下:
{'test': [a1, a2, b2], 'test2': 'something else', 'test3': 1}
这使得模板看起来不整洁。所以我认为最好只创建一个对象,就像这样:
class testclass():
self.test = [a1,a2,b2]
self.test2 = 'someting else'
self.test3 = 1
testobj = testclass()
所以我可以做:
{{ testobj.test }}
{{ testobj.test2 }}
{{ testobj.test3 }}
而不是打电话给字典。
既然我只需要这个对象一次,那么是否可以在不写类的情况下创建它呢?是否有一些简短的代码?这样做可以吗?或者Python不好吗?
9条答案
按热度按时间x6492ojm1#
您可以使用内置类型函数:
但是在这个特定的例子中(Django模板的数据对象),你应该使用@Xion的解决方案。
qyswt5oh2#
在Django模板中,点符号(
testobj.test
)可以解析为Python的[]
操作符,这意味着你只需要一个普通的dict:把它作为
testobj
变量传递给你的模板,你就可以在你的模板中自由使用{{ testobj.test }}
和类似的表达式,它们会被翻译成testobj['test']
,这里不需要专门的类。uujelgoq3#
Python 3.3+
types.SimpleNamespace
中还有另一种解决方案twh00eeo4#
使用
collections.namedtuple
。sigwle7e5#
使用建筑功能类型:文件
第一和第二X相同
vohkndzv6#
这里有一个创建object. A class is an object的极简方法,所以只要像调用Pythonobject literal一样调用类定义语法即可:
类变量是对象的成员,很容易引用:
这很奇怪,一个类从来没有作为一个类使用:它永远不会示例化。但这是一种创建一个特别的单例对象的简单方法:类本身就是您的对象。
v8wbuo2f7#
为了完整起见,还有
recordclass
:yc0p9oo08#
如果您只需要一个“QuickRecord”,则可以简单地声明一个空类
你不用示例化对象就可以使用它...
(just抓住python语言的动态特性......“á la Javascript”)
ddarikpa9#
下面的代码也需要创建一个类,但它更短: