如何向python类添加classmethod?
我正在尝试为我的用户类定义一个generate_用户名。(django的用户) 库代码将使用它如何向python类添加classmethod?,python,django,class,Python,Django,Class,我正在尝试为我的用户类定义一个generate_用户名。(django的用户) 库代码将使用它 def generate_username(self, user_class): """ Generate a new username for a user """ m = getattr(user_class, 'generate_username', None) if m: return m() 如何定义函数generate\u username
def generate_username(self, user_class):
""" Generate a new username for a user
"""
m = getattr(user_class, 'generate_username', None)
if m:
return m()
如何定义函数generate\u username
并将其添加到用户类中?我应该添加一个类方法对吗?您添加类方法的方式与monkeypatch instancemethod相同,但您必须对其应用
类方法
装饰器
class Test(object):
pass
@classmethod
def classfunc(cls, attr):
print(cls, attr)
Test.cf = classfunc
用法:
>>> Test.cf(33)
<class '__main__.Test'> 33
Test.cf(33)
33
您已有的代码有什么问题?上面的代码是我不想碰的库代码。而且user_类(django的用户类)很难再细分。getattr(user_class,'generate_username',None)看起来像user_class.generate_username,我猜它在寻找一个classmethod。所以我问如何动态添加classmethod?您甚至可以使用
classmethod
作为装饰器,更具python风格:@classmethod