如何重写 python 对象中的 __type__ 方法?

2024-01-02

我创建了一个 Python 类来进行一些数学计算。在该对象中,我试图更改类型(type)方法结果。而我的尝试失败了。

当我尝试为出现的对象使用 type() 方法时<class '__main__.MyClassName'>我在我的方法中重写类型方法:

class MyMathOBJ():
.   
.
.
    def __type__(self):
        return "MyMathOBJ"

但当我这样做时,一切都没有改变。结果一样。我期待的只是这个结果MyMathOBJ.


你似乎从根本上误解了什么type does. type它本身只是一个类,一个元类。你打电话时type在实例上,它返回与该实例对应的类对象,几乎相当于instance.__class__。但是,您只想更改类对象的方式打印时表示,所以你需要实现一个元类MyMathOBJ覆盖__repr__在元类中来完成此任务。

以下是完成您实际尝试做的事情的方法:

In [12]: class PrettyType(type):
    ...:     def __repr__(self):
    ...:         return self.__name__
    ...:

In [13]: class MyMathOBJ(metaclass=PrettyType):
    ...:     pass
    ...:

In [14]: obj = MyMathOBJ()

In [15]: obj
Out[15]: <MyMathOBJ at 0x1060cbcc0>

In [16]: type(obj)
Out[16]: MyMathOBJ
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重写 python 对象中的 __type__ 方法? 的相关文章

随机推荐

  • 使用 Ruby SDK 从 SNS 接收消息时的 AWS SQS JSON 格式

    我有一个订阅 SNS 主题的 SQS 队列 当我向该主题发布新通知时 我使用以下代码 在 Sinatra 应用程序中 jsonMessage announcement gt first name gt results first name
  • 开始触摸次数不等于完成触摸次数

    我有以下代码用于测试目的 void touchesBegan NSSet touches withEvent UIEvent event self customTouchHandler touches void touchesEnded N
  • SAMLException:NameID 元素必须作为响应消息中主题的一部分出现,请在 IDP 配置中启用它

    我在用春天萨姆执行 在 WebSSOProfileConsumerImpl 类中 我可以找到以下代码行 用于检查 nameIdSAML 响应的断言 NameID nameID if subject getEncryptedID null A
  • SwiftUI - NavigationView 中的内存泄漏

    我正在尝试向模态呈现的视图的导航栏添加一个关闭按钮 然而 解雇后 我的视图模型deinit方法从未被调用 我发现问题在于它捕获的位置self in 导航栏项的 我不能只通过一个weak self in 导航栏项的动作 因为 View 是一个
  • 嵌套方法调用与一次性变量

    嵌套方法调用或使用一次性变量时的最佳实践是什么 你不应该使用一次性变量吗 example persistentStoreCoordinator addPersistentStoreWithType NSXMLStoreType config
  • C 库必须具有 .lib 扩展名

    我不懂C 但需要与项目中的一些C文件进行交互 我注意到有些文件有 lib扩展 而其他的 也应该是库 有 c and h文件仅位于大文件夹中 这些库有什么区别 Are the c and h文件夹也是库 Is the lib为图书馆和那些这样
  • Tabify 3 QDockWidget

    如何在 QMainWindow 中为 3 个小部件创建选项卡式停靠栏 我正在使用下面的代码 widget1 new QDockWidget this widget1 gt setObjectName name1 addDockWidget
  • 为什么 webgl 程序的着色器必须位于 html 文件中?

    我看到以下问题 有人询问如何从 html 中删除着色器 WebGL 是否有替代在 HTML 中嵌入着色器的方法 https stackoverflow com questions 5878703 webgl is there an alte
  • Django 与附加字段的多对多关系

    我想在自动创建的 ManyToMany 连接表中存储一些附加信息 我将如何在 Django 中做到这一点 就我而言 我有两个表 员工 和 项目 我想要存储的是每个项目中每个员工每小时的工作收入是多少 因为这些值并不相同 那么 我该怎么做呢
  • 如何使用 PHP + HTML 在超链接中传递数据库值

    我的数据库中有一个名为 Artists 的表 它包含两个乐队 我想做的是能够使用超链接单击乐队名称 将该乐队名称发送到另一个 php 页面进行处理 我的超链接语法抛出错误 query SELECT FROM artists result m
  • 在mongo shell中访问shell环境

    有没有办法在 mongo shell 中访问 shell 环境变量 在nodejs中 它可以访问脚本中的环境变量 如下所示 var uri process env MONGOLAB URI 我正在 mongo 脚本中寻找相同的方式 您可以使
  • 有断头台限制的相同矩形内矩形打包算法的提示吗?

    我的任务是为一位熟人构建一个程序 该程序计算出将书页适合打印和剪切的大纸张的最佳方式 在实践中 这意味着我需要找到在给定矩形 打印纸 内排列具有相同尺寸 页面 的矩形的最佳方法 以便可以使用断头台切割来分离所有页面而不破坏任何页面 如果你们
  • QTableView 格式化单独的行和列

    也许我要问的问题太基本了 以至于我在某个地方错过了它 但我用谷歌搜索了各种各样的东西 但我无法找到答案 我有以下表视图 来自 SQLite 表 body new QSqlTableModel parent data gt m db body
  • return 语句何时需要显式移动?

    In a 对另一个问题的评论 https stackoverflow com q 17473753 321013乔纳森 韦克利回应我的声明 您永远不需要显式移动局部变量函数返回 价值 这是隐式的移动 gt 永远不要说永远 如果局部变量 您需
  • Roboguice 全球活动经理

    我在 Android 应用程序中使用 RoboGuice 3 0 1 和 RoboBlender 我想要一个全局事件管理器 并注意到 RG3 0 已经有了它 如下所述 https github com roboguice roboguice
  • iPhone 操作系统是 64 位还是 32 位?

    有人知道 iPhone 操作系统是基于 32 位还是 64 位架构吗 ARM http en wikipedia org wiki ARM architecture是32位架构 我相信iPhone和iPhone 3G使用omap2 它使用A
  • 通过比较 4 个不同的行来提取数据

    表数据如下 需要提取满足以下条件的记录 这里值 值2 值1 Value of two days back data should be gt 2 Value of last day data is lt 0 Value of next da
  • groupby pandas:插入列的索引与框架索引不兼容

    我已经对 pandas 执行了 groupby 我想应用一个复杂的函数 该函数需要多个输入 并给出一个 pandas Series 作为输出 我想将其刻录在原始数据框中 这对我来说是一个已知的过程 并且效果很好 除了最后一个案例 我对无法完
  • Roslyn 启动时间慢

    我注意到 Roslyn 解析 编译的启动时间是相当大的一次性成本 编辑 我正在使用 Roslyn CTP MSI 程序集位于 GAC 中 这是预期的吗 有什么解决方法吗 运行下面的代码 执行 1 次迭代 约 3 秒 所需的时间与运行 300
  • 如何重写 python 对象中的 __type__ 方法?

    我创建了一个 Python 类来进行一些数学计算 在该对象中 我试图更改类型 type 方法结果 而我的尝试失败了 当我尝试为出现的对象使用 type 方法时