在python中创建类的过程中,有没有初始化属性的方法?

在python中创建类的过程中,有没有初始化属性的方法?,python,class,properties,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

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

实际上,我不知道C语言,但看看你的代码,我想这就是你正在看的代码

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

x = MyClass(A=1, B=2)
编辑:


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

的内容实际上,我不知道C;#但是查看您的代码,我认为这就是您正在查看的参数

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

x = MyClass(A=1, B=2)
编辑:


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

的方法来使用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()方法。

要在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

我个人不知道是否有办法在一行pythonical中实现这一点,因为您还需要创建init()方法。

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

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'

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

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'


没有将它们作为参数传递给构造函数?您是在询问类创建还是实例创建?您的问题不清楚。具体一点,告诉我们你想在哪里应用这种东西。。因此,我们可以为{'A':1,'B':2}中的k,v给出更合适的答案:
:setattr(MyClass,k,v)
曾经可以说,一个具有100个属性的对象/类/结构,其中任意子集可能有值比无用还要糟糕。如果你把其中一件东西递给我,我能合理地期望它做什么?Qiau给了你下面所要求的,但我不确定你是否真的想要你所要求的。没有将它们作为参数传递给构造函数?你是在问类创建还是实例创建?你的问题不清楚。具体一点,告诉我们你想在哪里应用这种东西。。因此,我们可以为{'A':1,'B':2}中的k,v给出更合适的答案:
:setattr(MyClass,k,v)
曾经可以说,一个具有100个属性的对象/类/结构,其中任意子集可能有值比无用还要糟糕。如果你把其中一件东西递给我,我能合理地期望它做什么?Qiau给出了您在下面要求的内容,但我不确定您是否真的想要您要求的内容。对不起,但不是真的:)我刚刚给出了一个简单的示例,其中有两个属性,如果有100个,我想初始化它们的任意组合,该怎么办?我知道构造函数是如何工作的:)这不是我想要的。也许我的问题不太清楚。已编辑。@Simon看一下这个,它应该对您有所帮助case@Simon当前位置根本不清楚你想要什么。如果您有100个属性,为什么不将它们存储在
dict
中,而不是使它们成为类属性呢?我已经回答了这个问题。这只是一个例子。我也再次编辑了这个问题。我希望现在更清楚了。对不起,但不是真的:)我刚刚给出了一个带有两个属性的简单示例,如果有100个属性,我想初始化它们的任意组合怎么办?我知道构造函数是如何工作的:)这不是我想要的。也许我的问题不太清楚。已编辑。@Simon看一下这个,它应该对您有所帮助case@Simon当前位置根本不清楚你想要什么。如果您有100个属性,为什么不将它们存储在
dict
中,而不是使它们成为类属性呢?我已经回答了这个问题。这只是一个例子。我也再次编辑了这个问题。我希望现在更清楚了。这不是他要问的。@Surya:在你在其他评论中发布的链接中,我很确定这是我实现我想要的最好的方式。我不想加上A,B,C,D。。。到我的构造函数的参数列表,但我忘记了kwargs和setattr函数。所以这是最简单的方法。我认为…@gnibler:would
self.\u dict\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.update(kwargs)
会更明确吗?使用
self.\uu
setattr
没有。这不是他问的问题。@Surya:在你在其他评论中发布的链接中,我很确定这是我实现我想要的最好的方式。我不想加上A,B,C,D。。。到我的构造函数的参数列表,但我忘记了kwargs和setattr函数。所以这是最简单的方法。我认为…@gnibler:would
self.\u dict\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.update(kwargs)
会更明确吗?使用
self.\uu<代码>设置属性不存在。