是否可以将默认的类dunder方法转换为类方法?

2024-01-26

为了给你一些背景信息,昨天我遇到了这个帖子 https://stackoverflow.com/q/62031547/5472354。我发现这个问题非常有趣,所以我尝试找到一种解决方案,使语法尽可能接近所要求的内容。这是我想出的:

class DummyCube:
    cubes = []

    @classmethod
    def __getattribute__(cls, name):
        print('is this called?')
        attributes = [getattr(cube, name) for cube in cls.cubes]

        return attributes


class Cube:
    def __init__(self, volume):
        DummyCube.cubes.append(self)
        self.volume = volume


a = Cube(1)
b = Cube(2)
c = Cube(3)

print(DummyCube.__getattribute__('volume'))
print(DummyCube.volume)

我认为我的方法太复杂(或者通常不是很好),特别是与当前接受的答案相比,但幸运的是,这与我想知道的内容并不真正相关。

我的方法失败了,因为DummyCube.volume提出一个AttributeError: type object 'DummyCube' has no attribute 'volume',这当然是真的,但我不明白为什么我的习惯__getattribute__类方法未被调用。直接调用该方法就可以了。难道这根本不可能吗?我在这里缺少什么?据我所理解,__getattribute__ https://docs.python.org/3/reference/datamodel.html#customizing-attribute-access是使用“.”符号时首先调用的内容,但错误回溯不允许我确认这一点。


不知道这是否能解决您的问题。但要打电话给你的获取属性你需要包含括号。

class Cube:
    def __init__(self, volume):
        DummyCube().cubes.append(self)
        self.volume = volume
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将默认的类dunder方法转换为类方法? 的相关文章

  • 窗口多维 Tensorflow 数据集

    我有形状的二维数据m by n我想要的窗口大小w沿着第一个轴进入数据集m w许多二维数组 每个数组的大小w by n 例如如果数据是 0 1 2 3 4 5 6 7 8 9 10 11 然后我想将其窗口化 0 1 2 3 4 5 6 7 8
  • Python子进程:cmd退出时的回调

    我目前正在使用启动一个程序subprocess Popen cmd shell TRUE 我对 Python 相当陌生 但 感觉 应该有一些 api 可以让我做类似的事情 subprocess Popen cmd shell TRUE po
  • Numpy 中矩阵乘以另一个矩阵的每一行

    我有一个大小为 4x4 的齐次变换矩阵和一个大小为 nx3 的轨迹 该轨迹的每一行都是一个向量 我想将齐次变换矩阵乘以轨迹的每一行 下面是代码 append zero column at last trajectory np hstack
  • Python groupby 无法按预期工作[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 Excel 电子表格 其中包含以下格式的一些列 column1 column1 AccountName column1 SomeOtherFeature column2 blabla colu
  • 倒计时:01:05

    如何在 Python 中创建一个看起来像 00 00 分钟和秒 的倒计时时钟 它独立成一行 每次减少一actual秒 则应将旧计时器替换为低一秒的新计时器 01 00变成00 59它实际上击中了00 00 这是我开始使用但想要改造的基本计时
  • 为什么 Contextmanager 会抛出运行时错误“生成器在 throw() 之后没有停止”?

    在我的 utility py 中 contextmanager def rate limit protection max tries 3 wait 300 tries 0 while max tries gt tries try yiel
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • CSS class 和 id 同名

    css class 和 id 同名有什么问题吗 就像文章 帖子页脚的 footer 和页面页脚的 footer 一样 不 完全可以接受 一个类是使用 a 来定义的 并且 ID 是使用定义的 因此 就浏览器而言 它们是两个完全独立的项目 唯一
  • 如何在 Windows 上检查子进程是否被信号杀死

    问题 给定一个在 python 中启动的子进程 其代码类似于 import subprocess p subprocess Popen command stdout subprocess PIPE stderr subprocess PIP
  • 如何将返回列表的 Celery 任务链接到一个组中?

    我想从 Celery 任务返回的列表创建一个组 以便对于任务结果集中的每一项 一个任务将添加到该组中 这是一个简单的代码示例来解释用例 这 应该是上一个任务的结果 celery task def get list amount In rea
  • MAMP Python-MySQLdb 问题:调用 Python 文件后 libssl.1.0.0.dylib 的路径发生变化

    我正在尝试使用 python MySQLdb 访问 MAMP 服务器上的 MySQL 数据库 当我最初尝试使用 python sql 调用 Python 文件来访问 MAMP 上的数据库时 我得到了image not found关于错误li
  • 检查空查询集

    我想确认这是否是检查空查询集的正确方法 如果这就是为什么我会遇到 UNIQUE 约束错误 syn check Synonym objects filter MD objects get filter dict synonym type St
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • Python代码检测OS X El Capitan中的暗模式以更改状态栏菜单图标

    我有目标 C 代码来检测暗模式以更改状态栏 NSDistributedNotificationCenter defaultCenter addObserver self selector selector darkModeChanged n
  • 需要帮助编写扭曲的代理

    我想编写一个简单的代理 可以对请求页面正文中的文本进行打乱 我已经阅读了 stackoverflow 上的部分扭曲文档和其他一些类似的问题 但我有点菜鸟 所以我仍然不明白 我现在就是这样 不知道如何访问和修改页面 from twisted
  • Python Flask 不更新图像[重复]

    这个问题在这里已经有答案了 这里有一些关于图像的 Flask 问题 但没有一个能解决我的问题 我有一个应用程序可以创建图像 保存它 然后显示它 一次 它应该多次执行此操作 每次更改图像时 它应该加载新图像 它不是 它只显示与其显示的文件名关
  • AttributeError:模块“matplotlib”没有属性“font_manager”

    我安装了 matplotlib 但 python 3 8 10 显示了这个错误 AttributeError module matplotlib has no attribute font manager What i am doing w
  • 在 jupyter 笔记本中运行 pytest 测试函数

    我正在制作有关 python 测试选项的演示 我想要演示的技术之一是 pytest 我计划使用 jupyter ipython 笔记本进行演示 理想情况下 我希望能够在单元格中定义一个测试函数 然后使用 pytest 运行该函数 这样我就可
  • Python - 使用 BeautifulSoup 从 URL 列表中抓取文本的最简单方法

    使用 BeautifulSoup 从几个网页 使用 URL 列表 中抓取文本的最简单方法是什么 有可能吗 最好的 乔治娜 import urllib2 import BeautifulSoup import re Newlines re c
  • 在 Jupyter Notebook 上使用 virtualenv

    我尝试使用virtualenv在 jupyter 笔记本上 使用环境中安装的所有软件包 但在 jupyter 内部它们无法识别 已经尝试过 pip install tornado 4 5 3 pip install ipykernel 4

随机推荐