python中的对象初始值设定项语法(c#)

本文关键字:语法 对象 python | 更新日期: 2023-09-27 18:19:47

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

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

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

感谢

Brian

python中的对象初始值设定项语法(c#)

如果你想要一个带有一些字段的快速脏对象,我强烈建议使用namedtuplex

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

如果您控制该类,您可以通过使用默认值从结构中设置每个公共字段来实现自己的字段。下面是一个具有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

import attr
@attr.s
class MyThing:
    foo = attr.ib()
    bar = attr.ib()

使用此版本的MyThing只适用于前面的示例。attrs免费为您提供了一堆dunder方法,比如为所有公共字段提供默认值的构造函数,以及合理的str和比较函数。这一切也都发生在类定义时;使用该类时零性能开销。

您可以使用名称元组:

>>> import collections
>>> Thing = collections.namedtuple('Thing', ['x', 'y'])
>>> t = Thing(1, 2)
>>> t
Thing(x=1, y=2)
>>> t.x
1
>>> t.y
2