我想创建一个类似字符串的对象,它将定义一些基本str
类型没有的额外方法。对str
类型进行子类化显然不是可行的方法,因此我考虑使用封装策略但无法弄清楚如何在将对象传递给{{1}等其他函数时使对象像字符串一样运行}。
open
答案 0 :(得分:0)
你需要做任何一次
with open(s.string, 'w') as handle: handle.write('Hello world')
或
with open(str(s), 'w') as handle: handle.write('Hello world')
答案 1 :(得分:0)
您应该覆盖__getattr__
和__setattr__
方法,如下所示:
这将作为普通字符串,除了它有额外的方法from_str,你可以随意添加更多的额外方法。
class Student(object):
def __init__(self, name):
# define your internal stuff here, with self.__dict__
self.__dict__['name'] = name
def __getattr__(self, attr):
return self.name.__getattribute__(attr)
def from_str(self, txt):
self.name = txt
def __setattr__(self, attr, value):
if not attr in self.__dict__:
return self.name.__setattr__(attr, value)
else:
self.__dict__[attr] = value
student = Student('test')
print student.upper()
>>>TEST
student.from_str('foo')
>>> print student.upper()
FOO