如何在 python 中设置 __contains__ 方法?

2024-03-03

我无法理解如何正确设置contains我班上的方法。我知道当你调用它时它会自动使用运算符“in”,我只是认为我不明白如何正确设置它。

我必须使用它来查看 anotherCircle 是否包含在特定的圆圈内(均来自用户输入)。教授让我们为此采用两种不同类型的方法。

第一个我没有问题,或多或少明白它在做什么,如下:

def contains(self, circle2d):
  dist = math.sqrt((circle2d._x - self._x)**2 + (circle2d._y - self._y)**2) #Distance of second circle's coords from the first circle's coords
  if dist + circle2d._radius <= self._radius:
     return True

然而,下一个方法应该做同样的事情,使用contains方法,以便我们可以调用它in在主函数中。我所拥有的就是这个:

def __contains__(self, anotherCircle):
    if anotherCircle in self:
        return True 

当我尝试运行此程序时,出现多个错误。我想我错过了一些关于自我的东西,但我不确定是什么?有人可以试着向我解释一下当你写一篇文章时你到底需要做什么吗?contains像这样的方法?


The __contains__对象上的方法没有call in;相反,这就是in接线员呼叫。

当你写的时候

if circle1 in circle2:

python解释器会看到circle2是一个 Circle 对象,并且会寻找__contains__为其定义的方法。它本质上会尝试调用

circle2.__contains__(circle1)

这意味着你需要写你的__contains__方法不使用in,否则你将编写一个永无止境的递归方法。

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

如何在 python 中设置 __contains__ 方法? 的相关文章

随机推荐

  • 替换包装食谱中的模板

    我正在尝试为以下内容写一本包装食谱厨师石墨回购 https github com hw cookbooks graphite 在配方carbon rb中 出现以下几行 template node graphite base dir conf
  • 使用默认文本反应本机 iOS 打开消息应用程序

    Code Linking openURL sms number body Hi 我尝试使用手机号码和内容打开消息应用程序 但是手机号码和内容合并到一个部分中 如何解决此问题 将提供任何帮助 提前致谢 iOS 上的工作语法 截至 11 2 似
  • 2012年如何在Linux上设置googletest?

    我使用的是Linux机器 我已经从以下位置下载了 googletest 包here http code google com p googletest downloads detail name gtest 1 6 0 zip 但是 没有安
  • 由于依赖性问题,离子启动失败

    我刚刚安装了 Ionic npm install g ionic cli 当我尝试跑步时 ionic start ionic test app 初始化失败并出现 npm 依赖错误 关于名为 postcss 的包的错误版本的问题 ionic
  • https://www.googleapis.com/games/v1/players/xxxxx LibGDX And​​roid 出现意外响应代码 403

    我正在使用 LibGDX 制作 Android 游戏 我想使用 Google Play 游戏服务 API 但我无法让它工作 当我尝试登录时会发生以下情况 06 12 20 08 47 745 E Volley 4046 253 tk a U
  • 尝试静态链接 Boost

    我正在 Linux Eclipse CDT g 和 Boost 库中工作 对于使用 Boost 线程的现有程序 我尝试静态链接它而不是动态链接它 usr local lib 目录包含以下文件 libbost thread a libbost
  • JS 三元运算符混淆

    我现在正在学习三元运算符 我已经掌握了基础知识 但后来我看到了这个片段 它对我来说没有任何意义 谁能解释一下它是如何组合在一起的 b m 4 c 2 63 lt a 77 gt a a 65 48 lt a 57 gt a a 48 c 1
  • 结构体数组

    在不知道数组中最终存储的结构数量的情况下 如何在 C 中创建结构数组 我想在 for 循环中循环 创建一个 tempStruct 设置其变量 将其添加到数组中 然后再次循环 创建一个新的 tempStruct 并将其添加到数组中 当我试图与
  • 如何将菜单项放置在弧形栏上?

    我的客户想要一个弯曲的菜单 我该怎么做 菜单项位于红色方块中 它们应该大致位于粉色方块所在的位置 在蓝色条上 我应该以某种方式将它们放置在 SVG 中 还是将 SVG 与背景图像结合起来 并使用 Flexbox 等定位菜单项 而且它还应该对
  • “SQLNCLI”提供程序未在本地计算机上注册,sql server 2012

    致力于将应用程序从我的开发箱部署到客户端 在客户端上运行 exe 时 出现错误 SQLNCLI10 提供程序未在本地计算机上注册 我正在 SQL Server 2012 中进行开发 我尝试在目标计算机上安装 sqlncli msi 但没有成
  • AngularJS $compile 未定义

    我正在尝试学习 AngularJS 并且正在尝试动态编译一些 DOM 元素 我已经尝试过演示 try var templateHTML angular element p total p scope var clonedElement co
  • 哪里是设置 NOCOUNT 的最佳位置?

    对于运行在专用 SQL Server 上的大型数据库 数千个存储过程 是否最好包含SET NOCOUNT ON在每个存储过程的顶部 或者在服务器级别设置该选项 属性 gt 连接 gt 无计数 复选框 听起来 DRY 原则 不要重复自己 适用
  • iPhone 音频播放:通过内置扬声器强制播放?

    有谁知道是否可以实现即使插入耳机也可以通过内置扬声器播放音频文件 我不确定您是如何进行音频播放的 但请尝试查看 重定向输出音频 部分音频会话编程指南 http developer apple com iphone library docum
  • 如何内联分配 C 结构体?

    typedef struct int hour int min int sec counter t 在代码中 我想初始化该结构的实例 而不显式初始化每个成员变量 也就是说 我想做类似的事情 counter t counter counter
  • 从 json 反序列化,其中可以是单个 T 对象或 T 数组到 List [重复]

    这个问题在这里已经有答案了 我有这样的代码 var json GetJsonData path JObject event dates data JObject Parse json var event dates list JObject
  • /usr/local/lib/python2.6 和 /usr/lib/python2.6 有什么区别?

    我正在使用 Ubuntu 并注意到这两个目录 usr local lib python2 6 dist packages usr lib python2 6 dist packages 应该使用哪一个来安装 Python 包 Thanks
  • 持久的 RESTful 交互

    目前我们的团队正在进行讨论 我对其他观点感兴趣 假设我们有一个 RESTful Web 服务 其作用是通过应用各种分析算法和服务来注释文档 基本交互清晰 我们有一个资源 即文档集合 客户端将新文档 POST 到集合中 获取新文档的 URI
  • 如何设置表单具有透明背景

    我正在努力让我的表单在 vb net 中具有透明背景 目前采用新我设置的形式 Me SetStyle ControlStyles SupportsTransparentBackColor true 但表单仍然显示为具有默认的灰色背景 有人可
  • 如何在magento中进行自定义查询?

    我想在 magento 网站中编写自定义查询 我在 magento 根文件夹中创建了一个文件 test php 并编写了一个自定义查询 但它没有给我任何结果 请指导我 尝试这个 connection Mage getSingleton co
  • 如何在 python 中设置 __contains__ 方法?

    我无法理解如何正确设置contains我班上的方法 我知道当你调用它时它会自动使用运算符 in 我只是认为我不明白如何正确设置它 我必须使用它来查看 anotherCircle 是否包含在特定的圆圈内 均来自用户输入 教授让我们为此采用两种