对同一类的其他方法中的方法的"self"引用的快捷方式和/或避免



考虑一个简单的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%sn" %(str(datetime.datetime.now()).split('.')[0], msg, omsg))

让它简短/甜蜜的重点不是然后输入

self.p('Hello world')

但这是唯一的选择吗?

注意:我想在一个小团队中分发这个类 - 而不是将functionp()添加到他们的命名空间中。

如果你在方法中的任何位置都没有使用self,你可以用@staticmethod装饰它,省略self参数

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%sn" %(str(datetime.datetime.now()).split('.')[0], msg, omsg))

您仍然可以在类的实例上通过其他方法中的self.p(...)调用它

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

最新更新