Python中的隐含自我

时间:2015-06-04 05:38:28

标签: python

在Python中,为了减少混乱,有没有办法将“声明”类的成员/方法称为“自我”或解决方法。

class range:
    #range_start # Declare as self
    #range_end   # Declare as self

    def __init__(self,my_range_start,my_range_end):
        range_start = my_range_start
        range_end   = my_range_end

    def print_range(self):
        print ("%x %x" % (range_start,range_end))

2 个答案:

答案 0 :(得分:4)

没有任何直接的方法可以做到这一点。另外,如果你这样做了,你会违反一些相当深层次的python约定,而你的代码对于其他Python程序员来说将变得更难阅读。在我看来,成本太高,以减少视觉混乱。

答案 1 :(得分:2)

你无法以你想要的方式实现你所要求的东西,python社区已经讨论并抛弃了隐式self的想法。

但是,关于您的代码示例,您可以减少代码量:

class range(tuple):
    def print_range(self):
        print("%x %x" % self)

但是,代码很糟糕,因为添加print_range()函数是错误的方法(为什么它被称为print_range()而不是print(),顺便说一下?)。相反,提供__str__()__repr__()的实现来格式化对象。

更多说明:

  • 有一个namedtuple()函数可以创建类似于tuple的类型,您可以查看它。
  • 调用对象self是一种约定,您可以将其命名为任何名称。其他人不会轻易阅读你的代码。
  • 关于风格,请查看PEP 8.除非您有充分理由不遵守,否则您应遵守一系列惯例。