如何在类中使用静态/辅助方法?

2024-04-06

我正在写一个Fraction类,我正在尝试使用gcd(a,b)在初始化时Fraction目的。但是,当我尝试这样做时,如果没有Fraction部分Fraction.gcd(a,b)。我用了@staticmethod在这里,但它绝对没有任何作用,即我的代码在没有它的情况下也能正常工作。

无论如何我可以打电话吗gcd不放Fraction.在它前面?在 Java 中,我通常会创建一个静态方法,然后调用它。我可以很容易地将 GCD 代码放入 init 中,但我想在这里学习!

我在这里错过了很多。谁能解释一下:静态方法、类中的辅助方法以及如何在类中使用各种方法?

class Fraction(object):
    def __init__(self, a, b):
        if Fraction.gcd(a, b) > 1:
            d = Fraction.gcd(a, b)
            self.num = a/d
            self.denom = b/d
        else:
            self.num = a
            self.denom = b

    @staticmethod    
    def gcd(a,b): 
        if a > b: a,b = b,a
        while True:
            if b % a == 0: return a
            a, b = b%a, a

    def __repr__(self):
        return str(self.num) + "/" + str(self.denom)

不要忘记,在 Python 中并不是所有东西都需要在类中。没有什么关于gcd这使得它比独立函数更适合作为类方法:因此将其从类中取出。现在你可以打电话gcd(a, b).

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

如何在类中使用静态/辅助方法? 的相关文章

随机推荐

  • sphinx 使用 Latexpdf 删除 pdf 中的章节标题?

    我使用 Latexpdf 和 sphinx 生成从 rst 到 pdf 的文档 如何删除每章之前的章节标题 CHAPTER ONE 如中所述狮身人面像文档 http sphinx doc org config html你可以改变latex
  • 升级到 ubuntu 11.10 unity 后,monodevelop 中的 Gtk# 不再工作

    我有一些带有 GTK 用户界面的 monodevelop 程序 可以在 ubuntu 11 04 中顺利运行 无需统一 我已经统一升级到ubuntu 11 10 现在我收到以下错误 找不到类型或命名空间名称 Gtk 您是否缺少程序集引用 事
  • 在 C++ 中按值传递临时结构的简单方法?

    假设我想将一个临时对象传递给一个函数 有没有办法用 1 行代码和 2 行代码来使用结构来做到这一点 通过一堂课 我可以做到 class func TestClass 5 7 given class TestClass private int
  • 奇怪的 SimpleXML 问题 - 无法按名称引用节点?

    我正在尝试解析一个有效的远程 XML 文件 xml simplexml load file http feeds feedburner com HammersInTheHeart format xml 根元素是feed 我试图通过以下方式获
  • 底层提供程序在 Open 时失败

    我创建了 3 个 Ajax 进程来同时运行以下代码 但其中一个进程抛出消息所示的异常 底层提供商在 Open 上失败 try orderRepository orderRepo new orderRepository get context
  • 以角度方式将依赖服务注入到父类

    我有课parent and child The child类扩展parent 我需要 Inject注射类service to parent因为所有child正在使用它 我怎样才能做到呢 您可以从父级注入任何服务或类Injector类 你需要
  • Nestjs:即使正文验证失败也会上传图像

    首先 我为我糟糕的英语表示歉意 我有一个接受 PUT 请求的方法 它接收一个文件和 BlogModel 当我从前端提交表单并且 BlogModel 的验证失败时 文件仍然会上传 main ts import NestFactory from
  • 使用 HttpServletRequestWrapper 进行复制后缺少必需的请求正文

    在我的项目中 我有一组 api 调用 应通过某些常见验证集进行过滤 在这种情况下 我必须在请求到达 REST 控制器之前拦截该请求 读取请求正文 进行验证 如果请求通过验证 则将其传递给控制器 自从HttpServletRequest不能多
  • Python 请求库给出错误“远程端关闭连接而无响应”

    我正在请求库的帮助下进行后调用 import time def retry on connection errors url data data consists of dictionary with 20 key value pairs
  • node.js,express,如何从post请求中的body表单数据中获取数据

    我有一个简单的 Node js 应用程序 我想从用户那里获取帖子正文 app js var express require express var app express app use express json app post api
  • 使用 MediaTracker 在 Swing 应用程序中缓存图像

    我有一个基于 Swing 的金融代码 它将显示价格变动的金融符号以及每个柜台 公司向上或向下的箭头 此股票行情指示器上可以有很多计数器 最多 100 个 并查看是否需要缓存图像符号以提高性能 我尝试过遵循这个article http www
  • 绘制 4d 数据

    我有 4 个维度的点 我们称它们为 v w y z 我想将其可视化 我的计划是有两个正方形 v x w y x z 彼此相邻 然后将每个点绘制两次 给定两点 1 1 1 3 2 2 2 2 我设想这样的事情 给定一小组点 我可以使用不同的颜
  • YAGNI 在编写测试时也适用吗?

    当我编写代码时 我只编写我需要的函数 这种方法也适用于编写测试吗 为了安全起见 我应该提前为我能想到的每个用例编写测试 还是应该只为遇到的用例编写测试 我认为当你编写一个方法时 你应该测试预期的和潜在的错误路径 这并不意味着您应该扩展您的设
  • Pheanstalk(beanstalk 的 PHP 客户端)- 连接如何工作?

    我需要一些帮助来理解 pheanstalk php beanstalk 客户端 的使用 我有一个 PHP 程序 当表单数据发送到服务器时 该程序在服务器上执行 然后 PHP 程序应将表单数据打包为 JSON 结构并将其发送到后端服务器进程
  • 如果子级包含类,如何将类添加到父级?

    我试图将一个类添加到父 DIV 如果它有一个类为 testing 的子 IMG 元素
  • RecyclerView 仅在滚动时更新

    我有一个布局RecyclerView使用适配器 public class SimpleRecyclerAdapter extends RecyclerView Adapter
  • 按索引获取 DataGrid 行

    我正在尝试获得DataGridRow从我的DataGrid基于索引 我正在使用以下代码 public DataGridRow GetGridRow int index DataGridRow row DataGridRow DG State
  • Gulpfile.js 加载失败

    Visual Studio 任务运行程序无法加载 gulp 文件 我用VS2017 v15 9 4然而 现在这个项目是几年前开发的 Failed to run Gulpfile js cmd exe c gulp tasks simple
  • 如何为 AVVideoComposition 设置透明背景?

    Update 我为回答这个问题添加了 50 点声誉赏金 我有一个应用程序需要将一些视频和照片放在一起以创建电影 我正在使用 AVMutableComposition 来实现这一点 为了能够指示它如何合成视频 我必须使用 AVMutableV
  • 如何在类中使用静态/辅助方法?

    我正在写一个Fraction类 我正在尝试使用gcd a b 在初始化时Fraction目的 但是 当我尝试这样做时 如果没有Fraction部分Fraction gcd a b 我用了 staticmethod在这里 但它绝对没有任何作用