![]() |
1
32
|
![]() |
2
9
作为菲利普回答的附录;如果你不仅要装饰,还要保存 类型
可以 够了:
|
![]() |
3
2
|
![]() |
4
2
链接的维基百科文章中的UML图是错误的,你的代码也是错误的。 如果遵循“decorator模式”,则decorator类派生自修饰的基类(在UML图中,从WindowDecorator到Window的继承箭头丢失了)。 具有
您不需要实现未修饰的方法。
|
![]() |
5
0
补充@Alec Thomas回复。我修改了他的答案,使之符合装潢师的模式。这样你就不需要提前知道你要布置的班级。
然后,您可以将其用作:
|
![]() |
6
0
用例是:
有可能达到这样的行为:
这可能不是开箱即用的,因为除了getattr方法之外,我还从头顶键入了其他所有内容。 代码在修饰对象中查找请求的属性,如果它是一个方法(现在对属性不起作用,但是支持它们的更改应该不会太困难),那么代码将实际函数从方法中提取出来,并使用描述符接口调用将函数“重新绑定”为方法,但在修饰器上。然后它被返回并且很可能被执行。
其结果是如果
附言:是的,我知道它看起来很像继承,但这是在多个对象的组合意义上完成的。 |
![]() |
7
0
在Python3中,Philipp提出了一个公认的答案
我的工作方式:
|
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |