如何在Python中获取类的参数名称?

18 浏览
0 Comments

如何在Python中获取类的参数名称?

这个问题在这里已经有答案了:

列出对象的属性 [重复]

我正在尝试创建一个类,其中self属性是包含在__init__中的所有参数的列表。

例如:

class thing:
    def __init__(self,x,y=None,fav_animal=None):
        self.x = x
        if y is None:
            self.y = None
        else:
            self.y = y
        if y is None:
            self.fav_animal = None
        else:
            self.fav_animal = fav_animal
        self.arg_list = 'some code here?'
    def args(self):
        print(self.arg_list)

我正在尝试提供一种解决方案,使函数args(self)可以自动返回属性名称列表,即[x,y,fav_animal]。我可以手动设置self.arg_list = [x,y,fav_animal],但我希望每次调用__init__时自动发生。

如果我通过列表添加来做到这一点,例如:

class thing:
    def __init__(self,x,y=None,fav_animal=None):
        arg_list = []
        self.x = x
        arg_list.append(self.x)
# etc...
        self.arg_list = arg_list

该函数将返回给参数的值,而不是所需的名称。

为了背景说明,我想这样做的原因是因为我将在多个项目中使用此类事物,我希望能够添加参数到__init__中而不必手动更新列表。

非常感谢!

admin 更改状态以发布 2023年5月23日
0
0 Comments

您可以使用__dict__访问在__init__中定义的所有内容。

因此,您的args方法可能类似于

    def args(self):
        print(list(self.__dict__.keys()))

它会打印出

['x', 'y', 'fav_animal']

或者,正如@Klaus指出的那样

    def args(self):
        print(list(vars(self).keys()))

0