0

Pythonのこの1行のコードに相当するものはありますか?

// 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 }

編集:たぶん私の質問はそれほど正確ではありませんでした。私の主な目標は、コンストラクターに引数を渡さないことです。

多くのクラスメンバー(それらの任意の組み合わせ)をコンストラクターに渡さずに、およびすべてのデフォルト値を持つコンストラクターなしで初期化する方法。

編集:回答はThxで、質問がわかりにくいことをお詫びします。トピックの質問に対する答えを知りたかっただけです-コンストラクターで明示的に属性を記述せずに、クラスの属性のサブセットを初期化するための最良の方法(pythonicの方法)は何ですか?

4

3 に答える 3

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 に答える
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 に答える
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

init()メソッドも作成する必要があるため、これをPythonで1行で実行する方法があるかどうかは個人的にはわかりません。

于 2012-07-29T11:25:45.363 に答える