如何在函数中创建具有不同类属性的类?

正如评论中所讨论的,这是解决方案,因此对其他人有帮助:


您需要定义一个会话并将其传递给 load 函数,如下所示:


from sqlalchemy import engine #thanks to your comment

from sqlalchemy.orm import scoped_session, sessionmaker




class UserRegister(Resource):


    @classmethod

    def post(cls):

        #        the 'load' function in marshmallow will use the data to create usermodel object

        sess = scoped_session(sessionmaker(bind=engine))

        user = user_schema.load(request.get_json(), sess)


炎炎设计
浏览 81回答 2
2回答

守着一只汪

您必须重命名函数参数以不与类属性的名称冲突:def test_factory(b):    class Test:        a = b    return Test>>> t1 = test_factory(1)>>> t2 = test_factory(2)>>> print(t1.a, t2.a)1 2

蝴蝶不菲

解析class语句时,赋值将a其定义为临时类命名空间的一部分,类似于函数定义中对局部变量的赋值。因此,该名称a会在封闭函数范围内隐藏参数的名称。您可以更改参数名称(如schwobaseggl所示)def test_factory(a_value):    class Test:        a = a_value    return Test或者在定义之后设置属性:def test_factory(a):    class Test:        pass    Test.a = a    return Test或type直接致电:def test_factory(a):    return type('Test', (), {'a': a})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python