将lambda函数设置为属性

Cas*_*ash 0 python

考虑这两个类:

class Test(int):
    difference = property(lambda self: self.__sub__)

class Test2(int):
    difference=lambda self: self.__sub__
Run Code Online (Sandbox Code Playgroud)

这两个班级有什么区别吗?新增:如果是这样,使用该属性存储返回另一个函数的lambda函数的目的是什么?

更新:首先将问题更改为我应该问的问题.抱歉.虽然我现在可以从答案中知道解决方案,但在这种情况下我做自我回答是不公平的.(至少几天没有留下答案).

更新2:对不起,我还不够清楚.问题是关于特定的建筑,而不是一般的属性.

Amb*_*ber 8

对于Test1,您可以使用.difference- 对于Test2,您需要使用.difference().

至于为什么你可以使用它,可能的用途是用一个动态计算替换之前直接存储为属性的东西.

例如,如果您曾经存储过属性obj.a,那么您扩展了实现,以便它知道属性obj.b并且obj.c可以用于计算a,但也可以用于计算不同的东西.如果您仍然想要使用以前的对象形式提供向后兼容的东西,您可以实现obj.a为基于的property()计算,并且它将像以前那样对那些旧代码片段进行操作,而不需要进行其他代码修改.abc