【问题标题】:Python class with static method and reference to self具有静态方法和对自身的引用的 Python 类
【发布时间】:2014-07-01 01:06:39
【问题描述】:

我有一个类,我想从静态方法中引用self。有没有办法做到这一点?

class User(object):
    email = "username"
    password = "********"

    @staticmethod
    def all():
        return {"ex": self.password}


print(User.all())

【问题讨论】:

  • 你的目标是什么?您是否要打印所有 Users 的属性?
  • @EthanFurman 这是用作占位符对象,将一组常量传递给 api 中的序列化程序。所以要回答你的问题,是的。

标签: python static-methods django-rest-framework


【解决方案1】:

执行此操作的方法是使用类方法。这样做的方式是,第一个参数是类本身,您可以使用点运算符访问您的变量。

例如:

class User(object):
    email = "username"
    password = "********"

    @classmethod
    def all(cls):
        return {"ex": cls.password}


print(User.all())

https://docs.python.org/2/library/functions.html#classmethod

【讨论】:

    【解决方案2】:

    不,没有。

    staticmethod 的意义在于它不需要实例 (self) 或类(通常称为 cls)信息来完成其工作。

    如果您的staticmethod 需要self,那么它就不是staticmethod,您应该正常定义它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多