首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python gae中class指的是什么?

在python gae中class指的是什么?
EN

Stack Overflow用户
提问于 2013-01-21 14:34:06
回答 2查看 302关注 0票数 0

我在一个facebook.py用户文件中看到了这一点。

代码语言:javascript
复制
class User(db.Model):
    username = db.StringProperty(required=True)
    password = db.StringProperty(required=True)
@classmethod
def get_by_email(cls, email):
    return cls.query(cls.email == email).get()

日志服务是什么意思?如果你把self放进去,它通常引用User类。但是cls指的是什么呢?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-21 14:36:51

名称并不重要,但是应用classmethod装饰器会使该方法成为类方法。在这种情况下,第一个参数是类,而不是实例。

请使用以下代码查看实例、类和静态方法的比较:

代码语言:javascript
复制
>>> class Test(object):
    def instance_method(sth, x):
        return sth, x
    @classmethod
    def class_method(sth, x):
        return sth, x
    @staticmethod
    def static_method(x):
        return x


>>> a = Test()
>>> a.instance_method('abc')
(<__main__.Test object at 0x0000000002C26D30>, 'abc')
>>> a.class_method('abc')
(<class '__main__.Test'>, 'abc')
>>> a.static_method('abc')
'abc'

按照惯例,当您引用同一实例时,将其命名为self。当您引用它的类时,将其命名为cls。这只是一个约定,但为了保持一致性,最好遵循它。

票数 4
EN

Stack Overflow用户

发布于 2013-01-21 14:40:06

"cls“是用于表示"class”的常规标识符。

@classmethod修饰器调用方法,例如。obj.method(arg),则将表示该对象的类的类对象传递给第一个参数(本例中为cls)。

如果没有@classmethod修饰符,对象本身将被传递给第一个参数(本例中为cls)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14433450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档