如何在Python中为字符串对象提供自定义方法?

时间:2015-01-07 23:45:39

标签: python string

与“.format”类似,我希望能够在字符串之前自动加上前缀。我真的不知道这样做,但我认为它可能看起来像这样。

>>print("Function __init__ at CLASS myClass running...".log())

打印:

  
    

[myPrefix]函数 init 在CLASS myClass运行...

  

我不知道我将如何做到这一点。

1 个答案:

答案 0 :(得分:1)

可悲的是,你甚至不能将属性修改为内置类型。这样:

def log(self):
    print "logging "+self
str.log = log 

str("hello")

print "hello".log()

给出:

Traceback (most recent call last):
  Line 3, in <module>
    str.log = log 
TypeError: can't set attributes of built-in/extension type 'str'

执行此操作的最佳方法是编写一个日志记录方法,如下所示:

def log(s):
    print("my-prefix -- "+s)

log("hello")

这样做的好处是,如果在以后阶段,您决定不打印日志记录语句,而是将它们管道化为文件,您只需要更改log函数,而不是更改许多地方有印刷语句,例如:

def log(s):
    with open("my_log.txt",w) as f:
        data = f.write("the time - " + s)

log("hello")

现在,您的所有日志记录都将转到该文件,而无需更改实际的日志记录调用。