快捷方式和/或避免对同一类的其他方法中的方法的“自我”引用

时间:2017-07-13 13:53:40

标签: python

考虑一个简单的print辅助方法 - 它有意减少特定格式的输出结构的输入/混乱:

class MyClass(object):

  def p(self, msg,o=None):
    import datetime
    omsg = ": %s" %repr(o) if o is not None else ""
    print("[%s] %s%s\n" %(str(datetime.datetime.now()).split('.')[0], msg, omsg))

使它变短/变甜的重点是然后输入

  self.p('Hello world')

但这是唯一的选择吗?

注意:我想在一个小团队中分发此类 - 而不是在其命名空间中添加function p()

1 个答案:

答案 0 :(得分:1)

如果您未在方法中的任何位置使用self,则可以使用@staticmethod进行装饰,并省略self arg

https://docs.python.org/2/library/functions.html#staticmethod

class MyClass(object):

    @staticmethod
    def p(msg, o=None):
        import datetime
        omsg = ": %s" %repr(o) if o is not None else ""
        print("[%s] %s%s\n" %(str(datetime.datetime.now()).split('.')[0], msg, omsg))

您仍然可以通过self.p(...)在类

的实例上的其他方法中调用它

您也可以直接从MyClass.p(...)

拨打电话