7

我想知道是否有一种快速的方法可以在 python 中初始化一个对象。

例如,在 c# 中,您可以实例化一个对象并设置字段/属性,例如...

SomeClass myObject = new SomeClass() { variableX = "value", variableY = 120 };

谢谢

布赖恩

4

3 回答 3

6

如果您想要一个包含某些字段的快速脏对象,我强烈建议您使用namedtuples

from collections import namedtuple
SomeClass = namedtuple('Name of class', ['variableX', 'variableY'], verbose=True)
myObject = SomeClass("value", 120)

print myObject.variableX
于 2013-06-24T19:57:59.457 回答
2

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()

使用这个版本的MyThingjust 可以在前面的示例中使用。 attrs免费为您提供了一堆 dunder 方法,例如具有所有公共字段默认值的构造函数,以及明智str和比较功能。这一切都发生在类定义时;使用类时性能开销为零。

于 2015-07-08T11:41:51.807 回答
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
于 2013-06-24T19:59:34.207 回答