问题标签 [python-datamodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 为什么 __setattr__ 和 __delattr__ 在这种情况下会引发 AttributeError ?
在 Python 中,如果类型的属性是没有方法的数据描述符,那么在属性更新object.__setattr__
期间引发并type.__setattr__
引发的基本原理是什么?同样,如果类型的属性是没有方法的数据描述符,那么在属性删除期间引发和引发的基本原理是什么?AttributeError
__set__
object.__delattr__
type.__delattr__
AttributeError
__delete__
我之所以问这个问题是因为我注意到了这一点,object.__getattribute__
并且如果该类型具有一个属性,该属性是一个没有方法的数据描述符,type.__getattribute__
则不要在属性查找期间引发。AttributeError
__get__
object.__getattribute__
这是一个简单的程序,说明一方面属性查找(AttributeError
未引发)与属性更新object.__setattr__
和属性删除object.__delattr__
另一方面(引发)之间的差异AttributeError
:
type.__getattribute__
这是另一个简单的程序,说明一方面属性查找(AttributeError
未引发)与另一方面属性更新和type.__setattr__
属性删除(引发)之间的差异:type.__delattr__
AttributeError
我希望实例字典发生突变,而不是获取AttributeError
属性更新和属性删除。属性查找从实例字典返回一个值,所以我想知道为什么属性更新和属性删除也不使用实例字典(如果类型没有作为数据描述符的属性,他们会这样做)。
python - 为什么类 __dict__ 和 __weakref__ 从未在 Python 中重新定义?
类创建似乎从不重新定义__dict__
和__weakref__
类属性(即,如果它们已经存在于超类的字典中,则不会将它们添加到其子类的字典中),而是总是重新定义__doc__
和__module__
类属性。为什么?
django - 使用多个外键导入 CSV
尝试将 csv 数据导入到我的 django 应用程序模型中,我遇到了麻烦......我尝试使用脚本并通过 django-import-export。我将只详细说明后面的内容,以避免在整个空间中运行。
我的绘画模型有几个外键,我无法映射到我的模型,因为我还将它们导入 CSV 文件,即它们尚未创建。我怎样才能克服它?这就是我如何将绘画实例映射到外键名称而不是尚未创建的 ID?
为了测试,我手动为 eht 外键创建了一些条目,并将它们的 ID 整数添加到我的 CSV 中。我注意到我只能导入第一个外国 hey 值。其他不出现,例如在预览和最终导入中显示画家ID,但类别不显示。这是我的第二个问题:如何从同一个 CSV 文件中导入多个外键?
这是我的代码:
示例数据:id,title,Description,motif,image,date,largeur,hauteur,signature,remark,reference,category_id,location_id,medium_id,first_name,support_id,,a,0 100,Tence jouors,Tence, paysage, ,,,44.0,26.0,oui,,M26,1,Tense,huile ,Marius,bois,,,
任何输入,任何了解更多信息的机会都将受到高度赞赏。
python-3.x - python中默认的min()方法是否使用堆二叉树实现来查找列表中的最小值?
嗨,我有一个清单u = [2,45,0,56,78,13]
。
我们可以使用min()
方法找到列表中的最小值。我正在通过堆二叉树。
python有一个模块heapq
,有一个方法heapq.nsmallest()
可以帮助在堆二叉树中找到n个最小的数。
python中的默认min()
方法是否使用堆二叉树来查找列表中的最小值?
python - 用数据模型方法覆盖 * 和 ** 解包?
我试图弄清楚如何赋予对象解包值的能力。
我想出的用例如下:
- 让我们有一个Interval类,我们将使用它来评估实值函数。
- 我们想要求
- 会员资格,因此
__contains__
。 - 通过使用特定步骤调用或仅使用默认步骤对其进行迭代,因此
__call__
, 和__iter__
.
- 会员资格,因此
- 将来我会支持联合和交叉。
我正在寻找的功能之一是能够调用 Interval 对象并将其解包,例如 ifI = Interval(1, 2)
和a, b = *I
thena == 1
和b == 2
.
这主要适用于在参数中具有区间限制的函数。
例如一个函数def Integrate(f, a, b): ...
,然后我们进行评估,integral = Integrate(f, *I)
其中 $f$ 是实值函数,并且I
是我们正在讨论的区间。
问题是我不完全确定应该使用哪种数据模型方法。
到目前为止,我想出的示例类如下。
有任何想法吗?
python - 如何在干净的架构中建模 POST 主体
我在问自己一个关于清洁架构的问题。
让我们想象一个小 api,它允许我们使用该类型的 archi 创建和获取用户。此应用程序有两个端点并将数据存储在数据库中。假设我们有一个看起来像的 db 模型
首先,GET 端点将使用用例GetUser
并使用User
实体。该实体将如下所示:
我的问题涉及 POST 端点。显然,在此端点中传递的数据只是字段firstname
和。lastname
我必须在下面做另一个像这样的实体吗?
我发现这并不令人满意,因为将这样的实体想象为业务观点是没有意义的。然而,使实体“复合”似乎有点不稳定,例如:
第三种选择是在用例文件中使用一个类,该类仅用于对来自 POST 请求的过去进行建模。IE
所以问题是:根据干净的架构原则,对来自非业务实体的 POST 请求的数据进行建模的最佳方法是什么?
非常感谢您的帮助,如果我的示例不够清楚,请随时提出问题。
史蒂夫。
python - 创建类并在不带引号的情况下表示它
我需要表示我的数据类型 PS 没有前导和结束引号。
(所以'+'变成+)
我尝试覆盖repr但无法弄清楚如何正确地做到这一点。我的问题:
python - id() 函数在使用相同的浮点数时返回不同的值
当向变量声明整数时,整数和变量都返回相同的 id 值。但是,如果是浮点数,它会返回一个不同的 id 值。背后的原因是什么?
如下,
python - 元类级变量是否像类级变量那样级联到元类的实例化类的实例化对象?
我一直在深入查阅 Python 文档以获取描述符,但我无法理解其中关于描述符调用和给定 Python 等效的object.__getattribute__()
.
给定的纯 Python 等效项(请参阅下面代码中的“object_getattribute”)应该通过调用作为第一个参数提供的类对象来调用type的版本 ,这会导致对type的调用。问题是,在查找实例调用中涉及type的属性查找(在 中实现)应该会搞砸事情,因为它会桥接到不同的关系线,其中类是对象,元类是类。当类的MRO用尽时(此时将使用getattr ()),由进行的查找搜索应该终止,但调用类型__getattribute__()
getattr()
__getattribute__()
type.__getattribute__()
object.__getattribute__()
__getattribute__()
会不合逻辑地级联搜索以覆盖元类的字典,并可能返回一个名称相似的属性,这是错误的,因为元类定义了类,而不是对象。这是一个创建名为“mytype”的元类的示例,一个名为“base”的基类,它使用以下提供的 Python 等效项:https ://docs.python.org/3/howto/descriptor.html#technical-tutorial ,以及来自“mytype”的实例类“myclass”:
(注意:我不知道在创建类时如何向类添加方法定义 throw 调用类型的new (),所以我想出了类“base”作为提供“object_getattribute()”方法的方法文档)
现在,如果我运行:
或者,更简单地说:
我得到:
结果是我通常所期望的。搜索不会在元类中查找用于评估名称 - 那是不同的领域。但是,如果我使用文档中的纯 Python 等效项,如下所示:
然后我得到:
在mytype上。
总结:是不是文档中提供的纯Python版本错了?