- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
重新构建Docker镜像后,我开始出现以下错误:
$ docker run --rm -it python:3.8-slim /bin/bash
...
$ pip install flask_sqlalchemy
...
$ python -c "from flask_sqlalchemy import SQLAlchemy; SQLAlchemy()"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 715, in __init__
self.Model = self.make_declarative_base(model_class, metadata)
File "/usr/local/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 797, in make_declarative_base
model.query_class = self.Query
File "/usr/local/lib/python3.8/site-packages/sqlalchemy/ext/declarative/api.py", line 79, in __setattr__
_add_attribute(cls, key, value)
File "/usr/local/lib/python3.8/site-packages/sqlalchemy/ext/declarative/base.py", line 802, in _add_attribute
type.__setattr__(cls, key, value)
TypeError: can't apply this __setattr__ to DefaultMeta object
所涉及的特定软件包的版本:
python -c "import sqlalchemy, flask_sqlalchemy; print(sqlalchemy.__version__, flask_sqlalchemy.__version__)"
1.3.18 # sqlalchemy
2.4.3 # flask_sqlalchemy
尽管我也遇到了
1.3.17
和
2.4.1
版本的错误。
最佳答案
经过一些试验后,问题似乎是由于python:3.8.3-slim
和python:3.8.4-slim
之间的某些更改引起的。
要重现,请注意,此方法有效:
$ docker run --rm -it python:3.8.3-slim …
如果不这样做:
docker run --rm -it python:3.8.4-slim …
看来此错误/修复是问题的原因:
https://bugs.python.org/issue39960
关于python - flask_sqlalchemy : error with `__setattr__` to `DefaultMeta` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62896860/
type.__setattr__ 用于类,基本上是元类的实例。另一方面,object.__setattr__ 用于类的实例。这是完全明白的。 我看不出这两种方法有什么显着差异,至少在 Python 级
我将命名元组用于不可变数据结构,直到遇到数据类,我在我的用例中更喜欢它(与问题无关)。 现在我了解到它们不是一成不变的!至少严格来说不是。setattr(frozen_dc_obj, "prop",
我试图了解 __setattr__ 如何与类属性一起工作。当我试图覆盖 __setattr__ 以防止在简单类中写入属性时,这个问题就出现了。 我的第一次尝试使用了实例级属性,如下所示: class
我定义了以下类(其中很大一部分被缩短),但我的主要问题是,一旦用其初始化变量定义了此类的对象,我想确保这些变量在类外部是不可更改的...如果进行这样的尝试,我将需要引发 AssertionError
只有当在对象的属性中找不到该属性时,我才想使用 __setattr__,例如 __getattr__。 我真的必须使用try- except吗? def __setattr__(self, name,
如果在类中重写魔术方法 __getattr__,则只有在找不到属性时才调用被重写的方法,否则会出现默认行为。 但是__setattr__好像不是这样,它影响所有的属性。 我正在寻找的是当属性存在时表现
如何在旧式类上执行 __setattr__ 的等效操作? 最佳答案 如果你想做的是为旧样式类的实例设置属性,你可以使用 setattr内置函数,它也应该适用于旧式类。示例 - >>> class Fo
如下面的代码所示,为什么我不能使用 __setattr__ 在作为重载方法的类的一部分的字典上设置值?我预计 b.hello 不会存在。 class MyClass(): datastore
我研究 Python 已经有一段时间了,我开始明白正确覆盖 __setattr__ 可能很麻烦(to say the least !)。 有哪些有效的方法可以确保/向我自己证明覆盖已正确完成?我特别关
在 Python 中,我知道可以这样说 >>> class C: ... def __setattr__(self, name, value): ... print("Hey, you c
我知道在 Python 中可以在运行时向类添加方法: class Test: def __init__(self): self.a=5 test=Test() import t
在 Python 类中,当我使用 __setattr__ 时,它优先于此类(或任何基类)中定义的属性。考虑以下代码: class Test(object): def get_x(self):
我正在尝试覆盖 Python 类的 __setattr__ 方法,因为我想在每次实例属性更改其值时调用另一个函数。但是,我不希望在 __init__ 方法中出现这种行为,因为在此初始化期间,我设置了一
我有以下代码: #-*-coding:utf-8-*- class A(object): def __init__(self, x): self.x = x def _
在 werkzeug 中,我们看到: class Local(object): __slots__ = ('__storage__', '__ident_func__') def __
我想定义一个返回 __setattr__ 的通用实现的函数,该函数使属性不可设置,除非它们是属性(我应该一般测试数据描述符,但那是稍后的事情) )。该函数如下所示: def make_setattr(
我的应用程序在 Windows 上运行,我正在尝试针对 Linux 对其进行配置。 我得到以下 AttributeError: Preferences instances has no attribu
我正在实现一个类的所有预定义函数,当我实现我的__setattr__() 来更新列表时我卡住了 class testop: def __init__(self): self.l
我有一个类的属性,我可以在检查其他属性后更改这些属性,所以我编写了这个类: class MyClass(): def __init__(self, x): self.x = x
在 __setattr__() 中有什么方法可以区分来自类或子/继承类内部的属性集,以及来自当前类或子类外部的属性集? 我想从“外部”更改设置属性的工作方式,在我制作模块的情况下,我希望用户在设置属性
我是一名优秀的程序员,十分优秀!