python动态添加类方法_如何在Python中动态添加类方法

我用的是python3。

我知道@classmethod装饰器。另外,我知道类方法可以从实例中调用。在class HappyClass(object):

@classmethod

def say_hello():

print('hello')

HappyClass.say_hello() # hello

HappyClass().say_hello() # hello

然而,我似乎不能动态地创建类方法并让它们从实例中被调用。假设我想要

^{pr2}$

我使用过cls.__dict__(这会产生异常),以及{}(这只会使thingie从类而不是实例中调用)。在

如果你问我为什么,我想做一个懒惰的类属性。但它不能从实例中调用。在@classmethod

def search_url(cls):

if hasattr(cls, '_search_url'):

setattr(cls, '_search_url', reverse('%s-search' % cls._meta.model_name))

return cls._search_url

可能是因为还没从班上叫到物业。。。在

总之,我想添加一个lazy,类方法,该方法可以从实例中调用。。。这能以一种优雅的方式实现吗?在

有什么想法吗?在

我是如何实现的

抱歉,我的例子很糟糕:\

不管怎样,最后我还是这样做了。。。在@classmethod

def search_url(cls):

if not hasattr(cls, '_search_url'):

setattr(cls, '_search_url', reverse('%s-search' % cls._meta.model_name))

return cls._search_url

而且setattr确实有效,但是我在测试它时犯了一个错误。。。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值