Python - return 未实例化的构造函数参数名称
Python - return constructor arguments names without instantiating
假设我定义了一个带有构造函数的class。
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
的情况下获得类似的结果?换句话说:我可以只知道 class 名称来访问构造函数的参数列表吗?
编辑:以下是我打算如何使用此功能。
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
class,并且我们需要假设其构造函数的所有参数都是浮点数。最后一个假设并不是很吸引我,但我认为它是安全的,因为所有这些对象都需要由最终用户通过在 GUI 中键入值来创建。
只需在实际 class 上访问相同的属性 Person
:
>>> Person.__init__.__code__.co_varnames
('self', 'name', 'age')
您可以使用 help(Person)
或 help(Person.__init__)
假设我定义了一个带有构造函数的class。
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
的情况下获得类似的结果?换句话说:我可以只知道 class 名称来访问构造函数的参数列表吗?
编辑:以下是我打算如何使用此功能。
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
class,并且我们需要假设其构造函数的所有参数都是浮点数。最后一个假设并不是很吸引我,但我认为它是安全的,因为所有这些对象都需要由最终用户通过在 GUI 中键入值来创建。
只需在实际 class 上访问相同的属性 Person
:
>>> Person.__init__.__code__.co_varnames
('self', 'name', 'age')
您可以使用 help(Person)
或 help(Person.__init__)