Django 类变量的动态赋值

Django 类变量的动态赋值,django,python-2.7,django-models,Django,Python 2.7,Django Models,因此,我使用一个函数来停止在任何地方复制+意大利面代码,该代码具有完全相同的用途,减去我希望异常显示的错误消息,但我希望能够为Django解析动态访问和设置类变量 例如: 我知道如果你给vars()['{}'.format(a_variable)]加上变量名,你就可以访问它。但对于实例,您如何做到这一点? 下面的代码不起作用,但概述了如果实例有一个类似vars()的函数,或者有一种随机的方法/更好的方法,我希望实现的目标: class test(object): max_length =

因此,我使用一个函数来停止在任何地方复制+意大利面代码,该代码具有完全相同的用途,减去我希望异常显示的错误消息,但我希望能够为Django解析动态访问和设置类变量

例如: 我知道如果你给vars()['{}'.format(a_variable)]加上变量名,你就可以访问它。但对于实例,您如何做到这一点? 下面的代码不起作用,但概述了如果实例有一个类似vars()的函数,或者有一种随机的方法/更好的方法,我希望实现的目标:

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.