python中的对象初始化语法(c#)?

时间:2013-06-24 19:55:34

标签: c# python class instantiation

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

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

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

由于

布赖恩

3 个答案:

答案 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设置每个公共字段来实现自己的类,使用默认值以下是具有foobar的对象的示例(在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