将模型方法的返回值分配给模型属性

时间:2016-07-27 03:36:40

标签: python django

我有一个类似的课程:

class X(models.Model):
  def hello(self):
    return "Humpty Dumpty"

  name = (hello,)
  age = models.IntegerField()

现在当我在控制台中运行时:y.namey个实例,我得到以下内容:

  

(属性对象位于0x0000000004FDCBD8,)

我在这里做错了什么?

我尝试使用方法上方的@property,但它不起作用。

当我访问y.name时,我想获得“Humpty Dumpty”。因此,该方法会将其值赋给属性。

2 个答案:

答案 0 :(得分:2)

如果您只想获取名为属性访问权限的函数,请将name定义为property并向其提供函数foo

name = property(hello)

这会将属性中的fget设置为您的函数hello

y = X()
y.name
'Humpty Dumpty'

请注意,Python官方文档中有一个非常好的tutorial on descriptors

答案 1 :(得分:0)

这是无效的语法。你需要做这样的事情:

class X:
  def __init__(self):
      self.name = self.hello()

  def hello(self):
    return "Humpty Dumpty"

test = X()
print(test.name) # prints "Humpty Dumpty"