重写的方法是不是继承python中的装饰器?

Posted

技术标签:

【中文标题】重写的方法是不是继承python中的装饰器?【英文标题】:Do overridden methods inherit decorators in python?重写的方法是否继承python中的装饰器? 【发布时间】:2011-05-20 00:18:54 【问题描述】:

正如标题所说,被覆盖的方法会继承装饰器吗?

class A:
    @memoized
    def fun(self, arg):
        return None


class B(A):
    def fun(self, arg):
        #computations
        return something

B.fun() 也维护装饰器吗?

【问题讨论】:

当你尝试时,你观察到了什么? 我不同意这是因为不首先尝试而值得一票否决的事情。这是一个明确的问题,有一个明确的答案。如果您不了解如何自己编写装饰器,则在继承方法中使用装饰器是完全有效的。 “这是一个有明确答案的明确问题”与先尝试完全无关。接受提示。先试试吧。 我知道的老问题 - martineau 的 cmets 是可以理解的,但我倾向于说 Falmarri 的问题仍然很有价值,因为 SO 是关于分享知识并使其他人更容易找到答案。它不必自己编写测试代码,从而节省了其他人的时间。我认为不值得投反对票。 我同意@AlexandreH。这个问题使我免于自己尝试。你们其他人这么快就炸毁了正在努力学习的其他人,真为你们感到羞耻。 【参考方案1】:

这样想

class A(object):
    def fun(self, arg):
        return None
    fun = memoized(fun)

【讨论】:

【参考方案2】:

没有。这是一个完全不同的功能。但是您可以使用虚拟装饰器自己尝试一下。

【讨论】:

【参考方案3】:

不,它没有。

【讨论】:

以上是关于重写的方法是不是继承python中的装饰器?的主要内容,如果未能解决你的问题,请参考以下文章

Python:强制装饰器继承?

理解Python装饰器

如何在不复制整个方法的情况下将装饰器添加到 Python 中的继承方法?

Python子类方法从超类方法继承装饰器

有没有办法在继承期间持久化装饰器?

作为基类一部分的 Python 装饰器不能用于装饰继承类中的成员函数