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

2024-05-13 21:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,其中不知何故,这个班不尊重自己。当我访问函数中的类变量时,它会抱怨自变量不是全局变量。有什么想法为什么?在

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却抱怨它没有声明为global?有什么想法吗?在

假设temp是用Designs类声明的,并且填充了design\u name的值

^{pr2}$

serialize命令不起作用**,并给出以下错误:

  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

Tags: namefromimportself声明basestringsqlalchemy
1条回答
网友
1楼 · 发布于 2024-05-13 21:35:19

您将serialize定义为属性-因此您应该将其视为属性。在

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调用中的括号

输出:
你好
{'设计名称':'你好'}

相关问题 更多 >