Python、__init__ 和自我困惑

2023-12-03

好吧,当我发现这个时,我正在查看一些来源:

>>> def __parse(self, filename):
...         "parse ID3v1.0 tags from MP3 file"
...         self.clear()
...         try:
...             fsock = open(filename, "rb", 0)
...             try:
...                 fsock.seek(-128, 2)
...                 tagdata = fsock.read(128)
...             finally:
...                 fsock.close()
...             if tagdata[:3] == 'TAG':
...                 for tag, (start, end, parseFunc) in self.tagDataMap.items():
...                     self[tag] = parseFunc(tagdata[start:end])
...         except IOError:
...             pass
... 

所以,我决定测试一下。

 >>> __parse("blah.mp3")

而且,我收到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __parse() takes exactly 2 arguments (1 given)

这不是我第一次遇到这种情况,我一直认为我应该将 self 包含在参数参数列表中,但我知道这是不对的。有人可以向我解释为什么这种情况经常发生在我尝试使用的代码中,我想这是由于我对这些术语的理解程度,我什至几乎不明白 init 或 self 的作用,或者为什么它是相关的。 def x(b): print b 与 def x(self, b): self.b = b print self.b 相同,不是吗?为什么它如此重要!

我只是想要一个基本的解释,这样我就可以摆脱这个问题,谢谢。


The def __parse位于某个类定义内。

您无法将方法定义从类定义中提取出来。方法函数定义是类的一部分。

看这两个例子:

def add( a, b ):
    return a + b

And

class Adder( object ):
    def __init__( self ):
        self.grand_total = 0
    def add( self, a, b ):
        self.grand_total += a+b
        return a+b

Notes.

  1. 该函数不使用self.

  2. 类方法确实使用self。一般来说,所有实例方法都会使用self,除非他们有特定的装饰器,例如@classmethod不然的话。

  3. 该函数不依赖于其他任何东西。

  4. 类方法取决于类实例的调用Adder;此外,这取决于该类的实例Adder已正确初始化。在这种情况下,初始化函数(__init__)保证了每个实例Adder总是有一个名为的实例变量grand_total该实例变量的初始值为0.

  5. 你无法拉动add方法函数出Adder类并单独使用它。它不是一个独立的功能。它被定义了inside由于该位置,班级有一定的期望inside班上。

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

Python、__init__ 和自我困惑 的相关文章

  • 使用 Python 或 Django 处理收到的电子邮件?

    我了解如何通过 Django 发送电子邮件 但我希望用户能够回复电子邮件 如果他们发送 以及我收到 的电子邮件包含与某个字符串匹配的消息 我将调用一个函数 我已经做了一些谷歌搜索 但除了自己制作脚本之外似乎没有什么好的解决方案 如果有什么东
  • 如何在后台运行python程序以保持活动窗口相同

    我编写了一个程序 可以将前景窗口更改为显示器尺寸的 85 并且要成功运行 前景窗口需要保持不变 我已将 python 脚本 pyw 放入批处理文件 运行 pythonw 并在桌面上创建了批处理文件的快捷方式 并提供了快速运行它的快捷方式 我
  • 如何将一组重叠范围划分为不重叠范围?

    假设您有一组范围 0 100 一 0 75 b 95 150 c 120 130 d 显然 这些范围在某些点上重叠 您将如何剖析这些范围以生成不重叠范围的列表 同时保留与其原始范围相关的信息 在本例中为范围后面的字母 例如 运行算法后的上述
  • 如何阻止 Django 中发生级联删除?

    我的 Django 应用程序中有三个模型类 class Folder models Model folder models ForeignKey Folder null True blank True related name folder
  • “初始化 MCI 时出现问题”播放声音问题

    我正在尝试使用 Playsound 播放代码文件夹中的文件 但是每次运行代码时 它似乎都能够调用该文件 但我总是收到以下输出 playsound PlaysoundException Error 277 for command open p
  • 当图例位于轴之外时选择 matplotlib 图例

    当我修改 legend picking py 示例时 我遇到了一个有趣的怪癖 其中图例位于轴之外 如下所示 leg ax legend loc upper left fancybox True shadow True leg ax lege
  • 在 pandas 数据框中按列应用 Seaborn 热图

    我试图在枢轴熊猫数据帧上使用seaborn的热图 就像在超链接中一样有效 df pd DataFrame np random randint 1 100 size 3 2 df columns A B df sns heatmap df a
  • Python:按条件绘制多个正/负条形图

    这是我第一次用 python 绘制条形图 我的 df 操作 key descript score 0 noodles taste 5 1 noodles color 2 2 noodles health 3 3 apple color 7
  • SQLAlchemy+pymysql 错误:sqlalchemy.util.queue.Empty

    尝试使用 Eclispse 在 Ubuntu 上运行 Python 2 SQLAlchemy 0 8 和 MySQL5 2 但我不断收到以下错误 我使用 pymysql 实际上是 pymysql3 引擎 模块监视器 from sqlalch
  • Scrapy 仅抓取每个页面的第一个结果

    我目前正在尝试运行以下代码 但它只保留每个页面的第一个结果 知道可能是什么问题吗 from scrapy contrib spiders import CrawlSpider Rule from scrapy contrib linkext
  • 带有 UnboundLocalError 的本地和全局引用

    我不太明白为什么代码 def f print s s foo f 运行得很好但是 def f print s s bar s foo f 给我 UnboundLocalError 我知道我可以通过声明来解决这个问题s作为函数内的全局变量或简
  • 如何从分组数据创建直方图

    我正在尝试根据 pandas 中的分组数据创建直方图 到目前为止 我已经能够创建标准线图 但我不知道如何做同样的事情来获取直方图 条形图 我想获得泰坦尼克号事故中幸存者和未幸存者的 2 个年龄直方图 看看年龄分布是否存在差异 来源数据 ht
  • python 没有名为serial的模块

    我的 python 程序有问题 我编写了程序来将数据 温度 从 arduino 获取到我的树莓派 sqlite 数据库 但它在第 4 行 导入串行 处给了我一个错误 提示 ImportError 没有名为串行的模块 我使用 python3
  • 加载 IPython 笔记本时出错

    一旦我用 Jupyter 打开笔记本文件 它要求我转换文件 我就再也无法在标准 IPython 笔记本中打开它了 我收到以下错误 Error loading notebook Bad Request 2014 12 21 04 13 03
  • 如何在 VS Code 宏中将焦点返回到编辑器,将 Python 文本发送到调试控制台?

    我尝试按键绑定宏以将 python 文本发送到调试控制台并将焦点返回到 Visual Studio Code 中的编辑器 这是我尝试过的 安装了vscode python https marketplace visualstudio com
  • Python Pandas DateOffset 使用另一列中的值

    我以为这会很容易 但下面的内容并不适合我想要的 只是尝试通过使用另一列中的值将天数添加到预先存在的日期时间列来计算新的日期列 我下面的 偏移 列只有 1 位数字 df new date df orig date apply lambda x
  • 如何检索 SQLAlchemy 结果集的 python 列表? [复制]

    这个问题在这里已经有答案了 我有以下查询来检索单列数据 routes query select schema stop times c route number schema stop times c stop id stop id dis
  • ValueError:对于optimize.curve_fit中所需的数组来说对象太深

    我正在尝试拟合化学系统中四个变量 A B C D 的人口增长和衰退的动力学模型 我正在尝试求解以下一组方程 我已将其以矩阵形式附加 方程的矩阵形式 https i stack imgur com ysEdZ png 其中 t 是时间步长 k
  • 使 flake8 区分未定义函数和星型导入

    我有一个相当大的项目 我试图在发布之前清理它 但是当我运行 flake8 时 我得到了大量的 F405
  • Django:单击按钮加载另一个模板

    我已经在 django 项目上工作了几个星期 只是玩玩以便掌握它的窍门 我有点困惑 我现在有一个名为 home html 的模板 我想知道是否可以将另一个名为 profile html 的模板设置为 home html 模板上的链接 我有一

随机推荐

  • Git 跟踪、未跟踪、暂存、索引的含义?

    有人可以澄清这些术语的含义吗 跟踪的文件是否是在某个时刻添加到舞台中的任何文件 索引 和 阶段 一样吗 是否跟踪所有暂存文件 但反之则不一定成立 即 曾经暂存并提交的文件 但不是要提交的当前阶段的一部分 我如何知道哪些文件被跟踪 我如何知道
  • 使用 volley 以 json 格式将数据发送到服务器

    您好 我正在以 json 格式将数据发布到服务器 但它在错误响应中返回齐射服务器错误 RequestQueue queue Volley newRequestQueue this JSONObject jobj new JSONObject
  • 自定义html标签——有更好的方法吗?

    我正在尝试完成一个浏览器插件 它将分析文本并以某种方式标记它 基本上 假设您在浏览时发现页面中的某处出现了此文本 p and then Tom Cruise devoured the planet p 该插件正在扫描文本并会找到 Tom C
  • JS:将数组减少为嵌套对象

    所以我有这个数组 var mapped 2016 October Monday object 2017 January Friday object 2017 January Wednesday object 2017 October Mon
  • 勾画出图中的区域

    我有两个 2D numpy 数组 尺寸相同 我正在使用 matplotlib 绘制它们 我将第一个数组绘制为灰度彩色图 第二个代表光圈 但它是不规则形状 一些像素被勾勒出轮廓 它是形成轮廓的一组水平和垂直线 我不知道如何要求它绘制第二个数组
  • 多边形三角剖分的相反是什么?

    完成 2D 三角测量后 一些三角形具有相同的颜色 我想重新组合它们以绘制类似颜色的图形路径 我发现 如果我只是一一绘制三角形 一些图形渲染器会显示三角形之间的接缝 至少在涉及抗锯齿和 或透明度的情况下 那么 如何获取一组 不重叠 三角形并生
  • 使用 ctop.xsl 的内容 mathml 到中缀表示法未获得所需格式

    我正在尝试从内容 mathml 中制作数学符号或中缀表达式 我正在提供帮助ctop xsl为了这 ctop xsl Refer 可以解析得到表达式如下
  • 互斥锁所有权队列顺序

    假设我有三个线程 它们都通过互斥体访问相同的互斥部分 让我给你举这个例子 第一个线程探测互斥体并首先获取其所有权 THREAD 1 TIME 2013 03 13 01 00 00 000Z WaitForSingleObject hMut
  • 如何使用 OpenCV 检测白色斑点

    I paint a picture to test 我想知道黑色圆圈中有多少斑点以及每个斑点的大小是多少 所有斑点都是白色的 For example in this case I have 12 spots 我知道如何找到白色像素 并且很容
  • 获取TCL中执行代码的行号

    如何打印执行TCL脚本的行号 usr bin tclsh set a 100 set b 200 set c expr a b puts info script it will display the script name which i
  • 如何将静态部分添加到javapoet中的java类中

    有没有办法使用javapoet库将静态代码块添加到java类中 static whatever code is needed for initialization goes here Use TypeSpec Builder addStat
  • 为什么没有安装tensorflow?

    我无法安装张量流 显示此错误 错误 找不到满足张量流要求的版本 来自版本 无 错误 找不到张量流的匹配分布 我安装了Python 3 11 但再次收到相同的错误消息 我用谷歌搜索了这个错误 并尝试了一些向其他人建议的方法 但没有任何效果 包
  • 使工作簿保存中特定工作表的字段成为必填字段

    我在 Excel 中使用宏来使 Excel 工作簿中的字段成为必填字段 但是 问题是工作簿包含多个工作表 并且宏适用于所有工作表 有没有办法定位工作簿中的特定工作表 下面是我正在使用的代码 Private Sub Workbook Befo
  • SwiftUI 如何设置下划线与文本之间的间距?

    设置下划线的代码 我想让文字和下划线之间的间距变大 Text underline text underline 下划线是一种字体功能 您只需在需要的地方画线即可进行自定义 var body some View HStack Text Bef
  • 为什么不能用 C 语言编写 scanf("%.2lf", &a) ?

    我的朋友刚刚开始学习编程 他向我展示了他的代码并询问为什么它返回一些奇怪的数字 我看了一下 发现他用的是scanf 2lf a 接受输入 并按照习惯 我尝试将其更改为正常 然后他问我为什么它有一些奇怪的输出 谷歌搜索后我仍然没有找到答案 谁
  • EmailProperty 与 StringProperty 有何不同?

    如何EmailProperty与 不同StringProperty 考虑这两个例子 example 1 store an e mail address in an EmailProperty class MyModel db Model e
  • 如何在android中的一个布局上显示一半按钮,在另一个布局上显示一半按钮?

    我想设计一个如下图所示的布局 我尝试使用相对布局来做到这一点 但我没有想出解决方案 对于所有设备屏幕 它应该位于相同的位置 我怎样才能实现它 我尝试了这段代码
  • 如何在画布上绘制位图,同时尊重位图的 alpha 值?

    背景 我有一个主位图 我需要在其上绘制其他位图 主位图有一些半透明像素 具有 Alpha 通道变量值的像素 因此在其上绘制的其他位图应与其合并 而不是完全覆盖颜色 问题 我如何设置画布以在主位图上绘制相对于半透明像素的位图 注意 alpha
  • 调用表值函数时添加查询提示

    我正在从实体框架调用表值函数 并且需要能够添加option recompile 因为它选择的执行计划不是最佳的 在 SQL Server Management Studio 中运行查询 它看起来像这样 select from dbo fDE
  • Python、__init__ 和自我困惑

    好吧 当我发现这个时 我正在查看一些来源 gt gt gt def parse self filename parse ID3v1 0 tags from MP3 file self clear try fsock open filenam