Python - 返回构造函数参数名称而不实例化

标签 python parameters constructor python-2.x

假设我定义了一个带有构造函数的类。

class Person:

    def __init__(self, name="", age=0):
        self.__name = name
        self.__age = age

现在我想创建一个 Person 实例,但假设我忘记了应该传递给构造函数的内容。 由于我已经定义了默认参数,所以我可以这样做

dummy_person = Person()
print dummy_person.__init__.__code__.co_varnames

这会让我看看参数是什么,这样我就可以创建一个新的Person,这次传递适当的名字和年龄。

问题是:如何在不必先实例化 dummy_person 的情况下获得类似的结果?换句话说:我可以只知道类名来访问构造函数的参数列表吗?

编辑:以下是我计划如何使用此功能。

args_names = CircleTrajectory.__init__.__code__.co_varnames[1:]
args = {}
for arg_name in args_names:
    args.append(float(input("Insert " + arg_name + ": ")))

my_circle = CircleTrajectory(*args)

为此,我们需要定义一个 CircleTrajectory 类,并且我们需要假设其构造函数的所有参数都是 float 。最后一个假设对我来说不太有吸引力,但我认为它是安全的,因为所有这些对象都需要由最终用户通过在 GUI 中键入值来创建。

最佳答案

只需访问实际类 Person 上的相同属性:

>>> Person.__init__.__code__.co_varnames
('self', 'name', 'age')

关于Python - 返回构造函数参数名称而不实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36114399/

相关文章:

python - 如何停止一秒钟并计算一秒钟内的点击次数

Python:Ctypes如何检查内存管理

sql-server - MS SQL 查询这安全吗?

Java构造函数重载歧义

python - 使用 pyOpenGL 时没有名为 pydispatch 的模块

javascript - 如何在 React 中使用 props 来处理参数?

java - Android:参数不通过 if-else 语句?

android-fragments - 将项目从 eclipse 迁移到 studio 时任务 ':app:transformClassesWithDexForDebug' 执行失败

c++ - 在 C++ 中将 int 作为 bool 参数传递

python - python 中的 paste0 类函数用于多个字符串