我想知道是否有一种快速的方法来初始化python中的对象。
例如在c#中,您可以实例化一个对象并设置字段/属性,如...
SomeClass myObject = new SomeClass() { variableX = "value", variableY = 120 };
由于
布赖恩
答案 0 :(得分:5)
如果你想要一个包含某些字段的快速脏对象,我强烈建议使用namedtuples
from collections import namedtuple
SomeClass = namedtuple('Name of class', ['variableX', 'variableY'], verbose=True)
myObject = SomeClass("value", 120)
print myObject.variableX
答案 1 :(得分:2)
如果您控制该类,您可以通过使用comstructor设置每个公共字段来实现自己的类,使用默认值以下是具有foo
和bar
的对象的示例(在Python3中)字段:
class MyThing:
def __init__(self, foo=None, bar=None):
self.foo = foo
self.bar = bar
我们可以使用一系列与类值对应的命名参数来实例化上面的类。
thing = MyThing(foo="hello", bar="world")
# Prints "hello world!"
print("{thing.foo} {thing.bar}!")
2017年更新最简单的方法是使用attrs
library
import attr
@attr.s
class MyThing:
foo = attr.ib()
bar = attr.ib()
使用此版本的MyThing
只适用于上一个示例。 attrs
免费为您提供一堆dunder方法,例如所有公共字段都有默认值的构造函数,以及明智的str
和比较函数。这一切都发生在课堂定义时间;使用该类时性能开销为零。
答案 2 :(得分:0)
您可以使用namedtuple:
>>> import collections
>>> Thing = collections.namedtuple('Thing', ['x', 'y'])
>>> t = Thing(1, 2)
>>> t
Thing(x=1, y=2)
>>> t.x
1
>>> t.y
2