如何将classmethod添加到python类?

时间:2013-08-22 10:55:19

标签: python django class

我正在尝试为User类定义generate_username。 (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_username并将其添加到User类? 我应该添加 classmethod 吧?

1 个答案:

答案 0 :(得分:0)

您添加一个类方法的方式与monkeypatch一个instancemethod相同,但是您必须将classmethod装饰器应用于它。

class Test(object):
    pass

@classmethod
def classfunc(cls, attr):
    print(cls, attr)

Test.cf = classfunc

用法:

>>> Test.cf(33)
<class '__main__.Test'> 33