Python 使用装饰器和通过继承扩展子类之间有什么区别?
我试图用python来包装装饰器,但不明白为什么我们不能通过使用子类来实现同样的事情?你可以使用子类来实现同样的事情,事实上你甚至不需要子类——你也可以通过在另一个方法中包装一个方法并重新分配它来实现同样的事情。关于是否应该将decorator语法添加到语言中有很多讨论,因为它不允许您做任何新的事情,并且需要程序员学习更多的新东西 语法doos是将许多人已经在使用的模式形式化,并使其成为标准语法,该语法有一个名称和如何使用的指南。您不必使用decorator—您可以通过其他方式实现相同的效果—但使用官方支持的标准方法和简洁易读的语法会使生活变得更轻松Python 使用装饰器和通过继承扩展子类之间有什么区别?,python,decorator,Python,Decorator,我试图用python来包装装饰器,但不明白为什么我们不能通过使用子类来实现同样的事情?你可以使用子类来实现同样的事情,事实上你甚至不需要子类——你也可以通过在另一个方法中包装一个方法并重新分配它来实现同样的事情。关于是否应该将decorator语法添加到语言中有很多讨论,因为它不允许您做任何新的事情,并且需要程序员学习更多的新东西 语法doos是将许多人已经在使用的模式形式化,并使其成为标准语法,该语法有一个名称和如何使用的指南。您不必使用decorator—您可以通过其他方式实现相同的效果—但
@spam class | def name
只意味着“定义此处所写的名称,然后将name
绑定到spam(name)
”正如robert在评论中指出的,如果你有一个例子,答案可能会更具体…你有一个例子吗?我当然希望OP知道
@spam\nclass Ham{…}
=class Ham{…};Ham=spam(Ham)
并询问为什么使用此模式而不是使用子类。