我有以下代码,其中类(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/