2

所以我有两个文件这样

# functions.py
#I have a suspicion this 2 way import might be an issue
from models import *

def foo():
    return 'bar'

def some_other_unrelated_foo():
    users = User.query.all()
    return users

#models
from functions import *

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(), unique=True)

    def name_and_foo(self):
        return self.username + foo()

但如果我尝试:

print(user_a.name_and_foo())

我得到错误:

NameError: name 'foo' is not defined

相反,如果我有一个文件:

#models

def foo():
    return 'bar'

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(), unique=True)

    def name_and_foo(self):
        return self.username + foo()

我得到了正确的:

print(user_a.name_and_foo())
result: "user_abar"

让functions.py中的函数对models.py中的类方法可见的正确方法是什么?

4

2 回答 2

0

您必须先调用该函数。

#models
from functions import *

class User(UserMixin, db.Model):
    foo = foo()
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(), unique=True)

    def name_and_foo(self):
        return self.username + foo()

不过,请确保您的文件在同一个地方,这有时也可能是问题所在

于 2020-12-03T10:50:46.233 回答
0

好的,我在发布后不久就解决了这个问题,我将导入移到了两个文件的底部,这似乎解决了它。我不是 100% 清楚为什么这会起作用。

于 2020-12-03T11:05:20.010 回答