为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2022-10-25 15:41:12
正如评论中所讨论的,这是解决方案,因此对其他人有帮助:您需要定义一个会话并将其传递给 load 函数,如下所示:from sqlalchemy import engine #thanks to your commentfrom sqlalchemy.orm import scoped_session, sessionmakerclass 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)
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

您必须重命名函数参数以不与类属性的名称冲突:


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


查看完整回答
反对 回复 2022-10-25
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

解析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})


查看完整回答
反对 回复 2022-10-25
  • 2 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信