如何向python类添加classmethod?

如何向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

我正在尝试为我的用户类定义一个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
并将其添加到用户类中?

我应该添加一个类方法对吗?

您添加类方法的方式与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