【问题标题】:Class object variable = none类对象变量 = 无
【发布时间】:2014-05-07 07:50:04
【问题描述】:

我正在尝试声明一个应首先在 get 函数中设置为数据库对象的类变量。然后,当进行更改时,post 函数应该更改类变量的属性。当我设置它时,我会收到错误,这取决于我最初将类变量设置为什么。

即如果我将其声明为 = None,则会收到 NoneType 错误。如果我将其声明为“1”,我会得到一个“str 对象没有属性...”我尝试使用 = object() 并得到与字符串相同的消息...除了一个对象:)

例子

class myClass():
user = ???

def get(self):
self.user = database/memcache hit

   def post(self):
      self.user.name = self.request.get('name')

任何帮助将不胜感激,因为我被困住了!

【问题讨论】:

  • @DuhProgrammer13 Python中没有null
  • 对不起,我的错,想着 java。
  • 我认为您的post 在您初始化userget 之前被触发
  • 您确定要将user 设为类级别吗?
  • @thefourtheye 如何在获取之前触发帖子?抱歉 - 新手。

标签: python class class-variables


【解决方案1】:

你想要的是一个缓存的property

class myClass():
   def __init__(self):
       self._name = None

   def _user_get(self):
       if self._name is None:
          self._name = <get name from database>
       return self._name

   def _user_set(self, value):
       <set name to value in database>
       <if that succeeded then>
           self._name = value
       <or if you want it to be just re-fetched>
           self._name = None

   user = property(_user_get, _user_set)

类似的东西,但我相信有人可以提供更简短的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多