我有一个类似的课程:
class X(models.Model):
def hello(self):
return "Humpty Dumpty"
name = (hello,)
age = models.IntegerField()
现在当我在控制台中运行时:y.name
是y
个实例,我得到以下内容:
(属性对象位于0x0000000004FDCBD8,)
我在这里做错了什么?
我尝试使用方法上方的@property
,但它不起作用。
当我访问y.name
时,我想获得“Humpty Dumpty”。因此,该方法会将其值赋给属性。
答案 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"