我想知道是否有一种快速的方法可以在 python 中初始化一个对象。
例如,在 c# 中,您可以实例化一个对象并设置字段/属性,例如...
SomeClass myObject = new SomeClass() { variableX = "value", variableY = 120 };
谢谢
布赖恩
我想知道是否有一种快速的方法可以在 python 中初始化一个对象。
例如,在 c# 中,您可以实例化一个对象并设置字段/属性,例如...
SomeClass myObject = new SomeClass() { variableX = "value", variableY = 120 };
谢谢
布赖恩
如果您想要一个包含某些字段的快速脏对象,我强烈建议您使用namedtuples
from collections import namedtuple
SomeClass = namedtuple('Name of class', ['variableX', 'variableY'], verbose=True)
myObject = SomeClass("value", 120)
print myObject.variableX
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
库
import attr
@attr.s
class MyThing:
foo = attr.ib()
bar = attr.ib()
使用这个版本的MyThing
just 可以在前面的示例中使用。 attrs
免费为您提供了一堆 dunder 方法,例如具有所有公共字段默认值的构造函数,以及明智str
和比较功能。这一切都发生在类定义时;使用类时性能开销为零。
您可以使用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