下面我有一个非常简单的例子来说明我正在尝试做的事情。我希望能够将 HTMLDecorator 与任何其他类一起使用。忽略它被称为装饰器的事实,它只是一个名字。
import cgi
class ClassX(object):
pass # ... with own __repr__
class ClassY(object):
pass # ... with own __repr__
inst_x=ClassX()
inst_y=ClassY()
inst_z=[ i*i for i in range(25) ]
inst_b=True
class HTMLDecorator(object):
def html(self): # an "enhanced" version of __repr__
return cgi.escape(self.__repr__()).join(("<H1>","</H1>"))
print HTMLDecorator(inst_x).html()
print HTMLDecorator(inst_y).html()
wrapped_z = HTMLDecorator(inst_z)
inst_z[0] += 70
wrapped_z[0] += 71
print wrapped_z.html()
print HTMLDecorator(inst_b).html()
输出:
回溯(最近一次通话最后): 文件“html.py”,第 21 行,在 打印 HTMLDecorator(inst_x).html() TypeError:默认 __new__ 不带参数
我正在尝试做的事情可能吗?如果是这样,我做错了什么?