问题标签 [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 - 给定一个方法,如何获取定义该方法的类?
如果这是一个类方法,这个任务很简单:
但是,它之所以有效,是因为它some_fun
是一个classmethod
. 让我们让它成为一个常规方法,上面的代码停止工作:
上面的代码引发了AttributeError
.
MyClass
如果是常规方法而MyClass.some_fun
不是?some_fun
classmethod
data-structures - Python中的快速数据结构,用于将一堆图像索引为重复项
简介:我想用相应的 TEX 代码替换数学百科全书上大约 280,000 张数学公式的图像。为此,我将所有这些图像(或者更好的是:它们的 URL)分类到一个包含 100'000 个列表的列表中。
每个“子列表”都包含 url 字符串,这样子列表中的每个 url 都链接到同一个图像。该列表看起来像[["https://www.encyclopediaofmath.org/legacyimages/a/a130/a130010/a1300105.png", "https://www.encyclopediaofmath.org/legacyimages/a/a010/a010080/a01008021.png", ...], ["https://www.encyclopediaofmath.org/legacyimages/w/w130/w130080/w1300801.png", "https://www.encyclopediaofmath.org/legacyimages/w/w130/w130080/w130080211.png"], ...]
.
对于每个子列表,我已经(或仍在处理中)为该子列表的一个图像确定了相应的 TEX 代码。由于每个子列表中的图像都是相同的,我已经(或仍然)确定了整个列表中每个图像 url 的 TEX 代码。
现在我想用已知的 TEX 代码替换每篇文章中的图片(比如这篇文章) 。这导致我不得不在这个子列表列表中索引每篇文章的图像 URL。
我的问题:您是否知道比上述任务的列表列表更好的数据结构?
示例代码:
在上面的示例中,dups
是我的列表列表的简化版本(我使用数字而不是字符串。)如您所见,上述程序需要一些时间才能完成。我想改进 dups,以便可以更快地完成类似类型的索引。
备注 1:如果 dups 的长度为 n,则上述代码本质上会进行 1 + 2 + 3 + ... + n 次比较。这导致 n * (n+1)/2 次比较。由于在我的情况下 n = 100'000,这已经是很多比较了。
备注 2:一个明显的改进是将每个子列表转换为 Python 集合并考虑集合列表。但是,我的大多数子列表包含少于 3 张图像,所以我怀疑这会大大提高运行时间。
备注3:请注意,我几乎无法控制“传入”图像的顺序(基本上我必须遵循文章结构)并且我无法在列表列表中构建完整的顺序(因为我无法将子列表分开.) 因此,我还没有找到实现二进制搜索的方法。
python - 带有“__getitem__”的类没有“get”方法
我意识到一个没有方法的类自然get
就没有get
方法。将方法添加get
到实现__getitem__
[没有样板]的类的最佳方法是什么?
我试过了:
但蟒蛇抱怨:
显然collections.UserDict
可以使用,但我希望是懒惰的(因为分辨率很昂贵)并且在项目数据被访问(并通过Foo
对象上的键缓存)之前不填充项目数据。
想法?
python - dict_values 视图何时可以设置类似(以及为什么)?
文档说值视图不被视为 set-like,但有时它们是:
为什么要实现集合返回集合语义,但会因实际集合而失败?
python-3.x - 所有 Python dunder 方法的列表 - 您需要实现哪些方法才能正确代理对象?
我正在尝试创建一个对象代理。属性/属性查找可以通过简单地实现__getattribute__
,__setattr__
和__delattr__
方法来完成。但是,其他功能(例如,len(x), x[], bool(x)
需要实现其他类似的 dunder 方法__len__, __getitem__, __bool__
)。如果您没有在代理类上实现这些,但您代理的对象支持它们,您的代理将不完整并导致运行时错误。
因此,我想要一份我需要实施的所有事情的综合清单,但我在网上找不到任何可靠的清单。
这是我从typing
andbuiltins
模块中获得的 97 个独特的 dunder 方法名称。我知道他们中的很多人在做什么,但有些我不知道。为我的代理类实现全部或大部分它们会很痛苦,所以如果有解决方法我会很高兴。
python - 有什么方法可以判断函数对象是 lambda 还是 def?
考虑以下两个函数:
缺少对原始源代码的反省,有什么方法可以检测到它f1
是一个 deff2
还是一个 lambda?
python - 从 python 字典中,如何将键和值保存到 *.txt 文件中
如何从字典中将键和值打印到 *.txt 文件?
我试图读取数据并将其打印到 *.txt 文件,但 name.txt 文件为空。
python-3.x - 当 Python __call__ 方法获得额外的第一个参数时?
以下示例
印刷
__call__ 方法参数的数量在 b.meth(3, 4) 示例中发生了更改。请解释第一个(__main__.B 对象...)以及 Python 何时提供它?
在 Debian 9.9 Stretch 上使用 Python 3.5.3
python - `__getattribute__` 和 `__getattr__` 中的错误处理
请注意,此问题已在评论中回答
我注意到一些异常处理行为__getattribute__
,__getattr__
我在文档或此处的其他帖子中找不到。
考虑这个类A
。如果 的实例A
具有属性 ,则None
访问该属性会引发AttributeError
.
现在,文档说__getattribute__
无条件调用以实现类实例的属性访问。如果该类还定义了
__getattr__()
,则不会调用后者,除非__getattribute__()
显式调用它或引发AttributeError
.
由此,我猜想任何AttributeError
加注__getattribute__
都会被捕获,并且该过程会延迟到__getattr__
,这样AttributeError('in __getattribute__')
调用者就永远不会看到。
令我惊讶的是,不仅看到了错误,而且AttributeError
引发的 onA().a
也是 in 中的那个__getattribute__
,就好像__getattr__
从未被调用过一样。那是除非 __getattr__
提出自己的
在这种情况下,我们看到AttributeError('in __getattr__')
了提升。
这里有什么规则?如果不是AttributeError('in __getattribute__')
我提出了in 的一些子类Oops
,它们是否适用?AttributeError
__getattribute__
python - 自定义删除器方法示例
我遇到过各种自定义getter
or示例setter
,但是使用自定义时的用例是deleter
什么?到目前为止,我的一个例子是这样的: