|
1
11
这是行不通的;装修工在装修期间被叫来 类创建 时间,在创建实例之前很长时间( 这永远不会发生)。因此,如果您的“装饰者”需要实例,您必须在实例化时进行“装饰”:
注意,我根据函数名的含义更改了它们;实际的“decorator”,即(可能)修改方法的函数是
|
|
|
2
8
使用:
|
|
|
3
1
这是我们过去的做法。
现在,子类只需要o重写
|
|
|
4
1
您正试图在类创建时使用仅在实例化时可用的信息构造包装器。您可以在实例化时动态地构建decorator,但仍然需要将decorator应用于方法的外部类级别无法访问实例变量。
为了避免使用decorator解决这个问题所带来的混乱,Python(从2.7开始)合并了一个专用的数据模型来解决这个特定类型的问题。它被称为
|
|
|
5
0
|
|
|
6
0
嵌套方法成功了,我在使用self时遇到了再次传递self的问题。后来,我用lambda包装函数赋值来解决这个问题。 https://gist.github.com/kirankotari/e6959e74316352bfd06afa4d5ab8bd52 |