在python中创建类时,是否可以初始化属性/属性?

时间:2012-07-29 11:18:11

标签: python class properties

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方式)是什么。

3 个答案:

答案 0 :(得分:2)

实际上,我不知道C#,但看着你的代码,我认为这是你正在看的那个。

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

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

编辑:

如果您要查找100个参数,请使用**kwargs

之类的内容

答案 1 :(得分: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'

答案 2 :(得分: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()方法。