当前位置: 首页 > 知识库问答 >
问题:

如何为自定义类重载'float()'?

姚海
2023-03-14

我如何实现一个重载float(),即当我编写的类的实例被传递到float()调用它的方法?

我开始写我自己的分数类:

class Fraction:
    def __init__(self, num = 0, denom = 1):
        self.num = float(num)
        self.denom = float(denom)

现在我希望能够做到这一点:

float(Fraction())

我尝试使用下面的方法,但没有用。

def float(self):
    return self.num / self.denom

共有1个答案

淳于飞文
2023-03-14

在您的类上定义\uuuuuuuuuuuuuuuuuuuuuuuuuuu()特殊方法。

class MyClass(object):
    def __float__(self):
         return 0.0

float(MyClass())   # 0.0

请注意,此方法必须返回一个浮点值!计算self。num/self。默认情况下,在3.0之前的Python版本中,如果两个操作数都是整数,则返回一个int。在这种情况下,只需确保其中一个操作数是浮点:float(self.num)/self。例如,denom

 类似资料:
  • 我试图修改几个类的字节代码,这些类的打包jar文件不在类路径中-它们是在给定URL的运行时由自定义的加载的。我尝试使用和来拦截那些类,但失败了。类加载器是遗留项目的一部分,因此我无法直接对其进行更改。 代理可以很好地处理AppClassLoader“本地”加载的类,但只会忽略那些由自定义类加载器加载的类。 CustomClassLoader: 我的代理中使用的ClassFileTransforme

  • 问题内容: 我想将非spring bean类对象用作球衣Web服务类方法的参数。但是它在构建时会给出缺少的依赖项错误。 我的代码是: 问题答案: 关键是路径参数以字符串形式出现。根据规范,如果我们希望将自定义类型作为注入,则自定义类应具有以下三项之一: 返回类型的公共静态 返回类型的公共静态 或接受字符串的公共构造函数 另一种选择实现。您可以在此处查看示例。 如果您不拥有该类(它是无法更改的第三方

  • 问题内容: 我正在尝试使用自定义类加载器进行练习,并且有一些问题。有没有一种方法可以指示JVM在全球范围内使用我的自定义类加载器?例如,我写了一个在Tomcat 6下运行的小型应用程序。该servlet由容器管理,应在哪里设置类加载器?另外,Web应用程序使用了一些3rd party jars,我可以控制这些jars的类加载吗? 对于独立应用程序,以上答案是否会有所不同? 谢谢! 问题答案: 您可

  • 问题内容: 实施自己的最佳方法是哪一种? 其实我得到一个问题登记。如果我在中使用自定义类,则管理页面上不会显示任何应用程序。 我用一个小技巧解决了这个问题。我写了这个课: 并像这样实现我的自定义AdminSite: 所以,我可以用这个为。 有人知道更好的方法吗?由于我以下划线开头访问var,所以它不过是hack。我不喜欢黑客。 编辑:另一种方法是重写函数,但是在这种情况下,我将有冗余代码。 问题答

  • 我有一个类型 现在我想做这样的事情。 如何将我的 转换为基元类型? 它给我的错误是: 将“Rating”类型转换为“number”类型可能是错误的,因为这两种类型都没有充分重叠。如果这是有意的,首先将表达式转换为“未知” 我已经经历过了,但我想要的是它的反面 编辑: tsconfig.json tsc版本:3.2.1

  • 主要内容:前记,1.自定义视图,2.自定义异常,3.自定义异常的原理前记 在前面的文章中, 表示了视图解析的原理和异常解析器的解析原理。 这篇通过如何自定义视图和自定义异常处理和自定义异常处理的原理进行说明。 这里说明一下, 自定义的视图和自定义的异常都是会代替容器默认的组件的, 异常还好说, 就是不符合就抛, 视图的话需要注意一下优先级, 可以在自定义的视图解析器上加上注解。 1.自定义视图 这里原理就是添加一个视图和视图解析器, 然后放入容器中, 最后访问相应