Django 类变量的动态赋值
因此,我使用一个函数来停止在任何地方复制+意大利面代码,该代码具有完全相同的用途,减去我希望异常显示的错误消息,但我希望能够为Django解析动态访问和设置类变量 例如: 我知道如果你给vars()['{}'.format(a_variable)]加上变量名,你就可以访问它。但对于实例,您如何做到这一点? 下面的代码不起作用,但概述了如果实例有一个类似vars()的函数,或者有一种随机的方法/更好的方法,我希望实现的目标:Django 类变量的动态赋值,django,python-2.7,django-models,Django,Python 2.7,Django Models,因此,我使用一个函数来停止在任何地方复制+意大利面代码,该代码具有完全相同的用途,减去我希望异常显示的错误消息,但我希望能够为Django解析动态访问和设置类变量 例如: 我知道如果你给vars()['{}'.format(a_variable)]加上变量名,你就可以访问它。但对于实例,您如何做到这一点? 下面的代码不起作用,但概述了如果实例有一个类似vars()的函数,或者有一种随机的方法/更好的方法,我希望实现的目标: class test(object): max_length =
class test(object):
max_length = 10
text = 'blah'
name = 'hrrrnngg'
def set_name(self, text):
self.name = self._parse_text(text, 'name')
def set_text(self, text):
self.text = self._parse_text(text, 'text')
def _parse_text(self, data, variable):
# a simple idea, but much exception coding in here, i.e. negatives, ranges e.t.c.
if len(data) + len(vars()['self.{}'.format(variable)]) > self.max_length:
print "You have failed this city"
else:
return "{}, {}".format(vars()['self.{}'.format(variable)], data)
a = test()
print a.text
a.set_text('moo')
print a.text
提前谢谢 感谢@jornsharpe
更正后的代码为:
class test(object):
max_length = 10
name = 'batman'
text = 'blah'
def set_name(self, text):
self.name = self._parse_text(text, 'name')
def set_text(self, text):
self.text = self._parse_text(text, 'text')
def _parse_text(self, data, variable):
if len(data) + len(getattr(self, str(variable))) > self.max_length:
print "You have failed this city"
return getattr(self, str(variable))
else:
return getattr(self, str(variable)) + data
a = test()
print a.text
a.set_text('moo')
print a.text
a.set_text('derppphard')
print a.text
此代码打印到控制台:
$ blah
$ blahmoo
$ You have failed this city
$ blahmoo
你在找吗?先生,你是个天才。我认为这是肯定的!请参阅更正的代码:)当解析是每设置一项重复20个loc时非常有用。{code>'{}.格式(变量)-您的所有示例都已经是字符串(如果不只是使用
str(变量)
)。编辑:)谢谢!这么一个方便的小工具知道!这并不是一个真正的答案,但我写了一个更具python风格的版本供大家看看:嗯。。有点。。你想把它作为答案贴出来,这样我就可以给你评分了吗3.