Python 3.x 在python中,如何在类内部但在方法外部处理属性
对于一个需求,我需要能够使用给定的参数来创建新方法。例如,如果一个参数是['a','b'],我想遍历这个列表,并使用exec语句创建一个新方法Python 3.x 在python中,如何在类内部但在方法外部处理属性,python-3.x,class,methods,exec,Python 3.x,Class,Methods,Exec,对于一个需求,我需要能够使用给定的参数来创建新方法。例如,如果一个参数是['a','b'],我想遍历这个列表,并使用exec语句创建一个新方法例如: exec('def get_'+arg1+'(self):返回self.+arg1) 结果将是一个新的方法object.get_参数。我不知道如何在一个新方法之外访问对象属性,我也不认为可以在另一个方法内定义一个方法。任何帮助都将不胜感激 class Test(): def __init__(self,*args): sel
例如:
exec('def get_'+arg1+'(self):返回self.+arg1)
结果将是一个新的方法object.get_参数。我不知道如何在一个新方法之外访问对象属性,我也不认为可以在另一个方法内定义一个方法。任何帮助都将不胜感激
class Test():
def __init__(self,*args):
self.args = args
for arg in self.args
exec('def get_'+ arg +'(self): return self.' + arg)
foo = Test(['a','b','c'])
要更改对象的属性,可以访问其
\uuuu dict\uuu
。此示例模仿了我认为您要求的内容,并将所有新属性设置为值None
。但希望它能让这个想法变得清晰
class Test():
def __init__(self,*args):
for arg in args:
self.__dict__[arg]=None
self.__dict__['get_'+arg]=lambda :self.__getattribute__(arg)
foo=Test('a','b','c')
foo.b
foo.get_a()
不使用
lambda
函数,您可以在方法中定义一个完整的函数,然后将该函数分配给self中的一个属性。这些属性在您拥有实例之前不存在,因此在创建完类之前,您无法对它们执行任何操作。另外,您不需要Python中的getter,可能不应该使用exec
。你想解决的实际问题是什么?