我想创建一个类似字符串的对象,它可以定义一些基本str
类型没有的额外方法。子类化str
类型显然不是要走的路,所以我考虑过使用封装策略,但不知道如何使对象在传递给其他函数时像字符串一样open
。
class StringLike(object):
def __init__(self, string):
self.string = string
def __str__(self, string):
return self.string
s = StringLike('~/Desktop/test.txt')
with open(s, 'w') as handle: handle.write('Hello world')
#----------------------------------------------------------------------#
#TypeError: coercing to Unicode: need string or buffer, StringLike found