python - NameError:类中的全局名称错误,但实际上已定义

标签 python nameerror

我有以下代码,其中类(class)不尊重 self 。 name.,当我在函数中访问类变量时,它提示 self.variable 不是全局变量。有什么想法吗?

from sqlalchemy import Column, ForeignKey, Integer , String, Float, DateTime
from sqlalchemy.ext.declarative import declarative_base

Base=declarative_base() 

class Designs(Base):
  __tablename__='designs'
  design_name=Column(String(80),nullable=False,primary_key=True)

  @property
  def serialize(self):
      return{
        'design_name': self.design_name,
       }

当我访问该类时,design_name 就在那里,但不知何故 python 提示它没有声明为全局?有任何想法吗?

假设 temp 用 Designs 类声明,并填充了 design_name 的值

  print temp.design_name
  print temp.serialize()

xpc_fp   <----- print i.design_name works 

序列化命令不起作用**并给出以下错误:

  Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "database_setup.py", line 149, in serialize
    'design_name': self.design_name,
NameError: global name 'design_name' is not defined

最佳答案

您将序列化定义为属性 - 因此您应该将其视为属性。

from sqlalchemy import Column, ForeignKey, Integer , String, Float, DateTime
from sqlalchemy.ext.declarative import declarative_base

Base=declarative_base()

class Designs(Base):
  __tablename__='designs'
  design_name=Column(String(80),nullable=False,primary_key=True)

  @property
  def serialize(self):
    return{
      'design_name': self.design_name,
    }



temp = Designs(design_name='HELLO THERE')
print(temp.design_name)
print(temp.serialize)

因此请从 .serialize 调用中删除括号

输出:
你好
{'design_name': '你好'}

关于python - NameError:类中的全局名称错误,但实际上已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032628/

相关文章:

python - 在 RNN 中每对序列重置 LSTM 中的 c_t 和 h_t

java - 接受电话号码的正则表达式

python - 如何使用 .index 在列表中搜索项目在列表中的位置?

python - Django 名称错误 urls.py

python - 如何使用 pandas 从 csv 中读取一行,进行 VLOOKUP 操作并将结果保存到另一个文件中?

python 赛车冠军

python - 为什么我会收到 NameError : name 'train_test_split' is not defined?

python - 从外部模块调用类会导致 NameError,在 IDLE 中它工作正常

python - 为什么在使用 execfile() 运行的 python 脚本中 import 不能防止 NameError?

python - 在列表 [Python] 上使用追加时出现 NameError