0

任何等效于 Python 中的这一行代码?

// C# just shows how class looks like
class MyClass {
    public int A {get; set;}
    public int B {get; set;}
}

// This is that one-line code in C#. Any pythonic way to do something like this?
// var x = MyClass() { A=1, B=2 } - "var" syntax sugar, at compile time it's == MyClass
MyClass x = MyClass() { A=1, B=2 }

编辑:也许我的问题不是那么精确。我的主要目标是不将参数传递给构造函数。

如何初始化许多类成员(它们的任何组合)而不将它们传递给构造函数并且没有具有所有默认值的构造函数。

编辑:谢谢你的答案,很抱歉这个令人困惑的问题。我只是想知道主题中问题的答案 - 什么是初始化类的属性子集而不在构造函数中明确写入它们的最佳方法(pythonic 方法)。

4

3 回答 3

2

我不确定您要实现什么,但您可能希望将泛型参数传递给类构造函数,例如:

class MyClass:
    def __init__(self, **kwargs):
        for key in kwargs:
            setattr(self, key, kwargs[key])

x = MyClass(a='test', b='test2')
# x.a == 'test'
# x.b == 'test2'
y = MyClass(c=123, d='something else')
# y.c = 123
# y.d = 'something else'
于 2012-07-29T11:35:04.403 回答
2

实际上,我不知道 C#,但查看您的代码,我认为这是您正在查看的代码。

def MyClass (object):
    def __init__ (A, B):
        self.A = A
        self.B = B

x = MyClass(A=1, B=2)

编辑:

如果您正在寻找 100 个参数,请使用类似**kwargs.

于 2012-07-29T11:22:04.337 回答
0

在 Python 中创建一个类只需这样做:

class Name:
    def __init__(self, arg1): # When an instance of a class is made this will be executed.
        self.var1 = 1
        self.var2 = 2
        self.arg1 = arg1

person1 = Name("arg1") # Create instance of the class

我个人不知道是否有一种方法可以在一行中以 Python 方式执行此操作,因为您还需要创建 init() 方法。

于 2012-07-29T11:25:45.363 回答