不带参数的类方法会产生 TypeError

2023-11-27

这段代码:

class testclass:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.test()

    def test():
        print('test')

if __name__ == '__main__':
    x = testclass(2,3)

yields:

Error:
TypeError:test() takes no argument(1 given)

我在没有任何参数的情况下调用测试函数,为什么错误说我已经给了一个?


您将这些方法称为self.test()。你应该在心里把它翻译成test(self)找出函数定义中如何“接收”调用。你的定义test然而很简单def test(),其中没有位置self去,所以你会得到你观察到的错误。

为什么会这样呢?因为Python只能在明确给出要查找的对象时查找属性(并且查找属性包括方法调用)。因此,为了使该方法执行取决于调用它的对象的任何操作,它需要以某种方式接收该对象。接收它的机制是将其作为第一个参数。

可以告诉 Pythontest实际上并不需要self无论如何,使用staticmethod装饰师。在这种情况下,Python 知道该方法不需要self,所以它不会尝试将其添加为第一个参数。所以以下任一定义test将解决你的问题:

def test(self):
    print('test')

OR:

@staticmethod
def test():
    print('test')

请注意,这仅与对象上调用的方法有关(它总是看起来像some_object.some_method(...))。正常的函数调用(看起来像function(...))“点左边”没有任何东西,所以没有self,所以不会自动通过。

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

不带参数的类方法会产生 TypeError 的相关文章

  • Django:NoReverseMatch at /'myapp'不是注册的命名空间

    我在模板渲染期间遇到此错误 我想做的是允许用户上传 csv 然后将数据处理到模型中 第 109 行出错 myapp 不是已注册的命名空间 这是我的第 109 行代码
  • 在 PyCharm 中启用终端模拟

    很多人告诉过我和PyCharm 2 7 的 PyCharm 发行说明 https www jetbrains com pycharm whatsnew whatsnew 27 html吹捧那个PyCharm包括完整的终端仿真 我认为这是关于
  • Django表单中的隐藏字段不在cleaned_data中

    我有这个表格 class CollaboratorForm forms Form user forms CharField label Username max length 100 canvas forms IntegerField wi
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • Python Jinja2 调用宏会导致(不需要的)换行符

    我的 JINJA2 模板如下所示 macro print if john name if name John Hi John endif endmacro Hello World print if john Foo print if joh
  • Python 中没有名称属性的表单提交

    背景 在Python中使用urllib和urllib2 您可以进行表单提交 您首先创建一个字典 formdictionary search stackoverflow 然后使用 urllib 的 urlencode 方法来转换这个字典 pa
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • 如何在 Google App Engine (Python) 中定义配置变量/常量?

    我是 python GAE 的新手 想知道如何快速定义和使用全局设置变量 所以说你 git 克隆我的 GAE 应用程序 然后打开config yaml 添加更改设置 应用程序就全部连接起来 如下所示 config yaml or whate
  • 如何向 Jupyter (ipython) 笔记本自动添加扩展?

    我已经安装了扩展 calico document tools 我可以使用以下命令从 Jupyter 笔记本中加载它 javascript IPython load extensions calico document tools 如何为每个
  • 将 gtk.DrawingArea 保存到文件

    我想使用 PIL 将 gtk DrawingArea 对象内容保存到 jpeg 文件 我特别想添加这个脚本 http pygstdocs berlios de pygst tutorial webcam viewer html制作照片的可能
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • pip 升级到 pip 10.x.x 后解析需求文件的正确方法?

    所以今天我确实发现随着发布pip 10 x x the req软件包更改了其目录 现在可以在下面找到pip internal req 由于通常的做法是使用parse requirements功能在你的setup py从需求文件中安装所有依赖
  • 如何循环遍历列表中除最后一项之外的所有项? [复制]

    这个问题在这里已经有答案了 Using a for循环 如何循环遍历列表中除最后一项之外的所有项 我想遍历一个列表 检查每个项目与后面的项目 我可以在不使用索引的情况下做到这一点吗 for x in y 1 If y是一个生成器 那么上面的
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规
  • ValueError:序列太大;不能大于 32

    我写了这段代码 from Crypto Cipher import AES import numpy as np import cv2 base64 BLOCK SIZE 16 PADDING pad lambda s s BLOCK SI
  • tkinter 库 treectrl 转换为 exe 安装程序时出现 cx_freeze 错误

    我使用的是 python 版本 3 7 我使用了这个名为 treectrl 的外部库 当我运行 py 文件时它工作得很好 但是当我使用 cx freeze 转换为 exe 文件时 它给了我错误 NomodulleFound 名为 tkint
  • pandas groupby 中两个系列的最大值和最小值

    是否可以从 groupby 中的两个系列中获取最小值和最大值 例如下面的情况 分组时c 我怎样才能得到最小值和最大值a and b同时 df pd DataFrame a 10 20 3 40 55 b 5 14 8 50 60 c x x
  • 在 Python 中为非唯一列表创建虚拟列

    目前我有下一个数据框 import pandas as pd df pd DataFrame ID 1 2 3 4 5 col2 a b c c d e f f b f a c b b a b print df ID c
  • print() 函数的有趣/奇怪的机制

    我正在学习Python 我目前正在学习如何定义自己的函数 并且在尝试理解返回值和打印它之间的区别时遇到了一些困难 我读到的关于这个主题的描述对我来说不太清楚 所以我开始自己尝试 我想我现在已经明白了 如果我没记错的话 区别在于你可以传递 a
  • 无法将 类型的对象转换为张量

    我正在编写一个使用 Flask 框架的客户端 python 文件 并在 docker 机器中运行它 因此 这需要一个输入文件并生成它的输出 但它会抛出无法转换为张量的错误 tf app flags DEFINE string server

随机推荐

  • 如何获取 C 中动态创建的结构数组的长度?

    我目前正在尝试获取动态生成的数组的长度 它是一个结构数组 typedef struct my data unsigned int id double latitude double longitude unsigned int conten
  • Singleton 和 @Autowired 返回 NULL

    我有一个存储库管理器来管理我的存储库 我有 Autowired 来实例化我的属性 但它们始终为空 bean 在我的 xml 中配置正确 有什么理由吗 public class RepositoryManager private static
  • 测量 Android 应用程序花费的时间

    我是安卓新手 在我的应用程序中 我想跟踪其他应用程序 安装在设备上 的使用时间 在前台 是否可以 如果是的话怎么办 提前致谢 首先 这里需要知道什么是在前台运行的应用程序 您可以使用以下命令检测当前的前台 后台应用程序ActivityMan
  • 如何在 Swift 3 (XCode 8) 中从文本文件读取数据

    首先我想从我现在的情况说起 1 现状 我有一个文本文件 data rtf 我也尝试过并且愿意使用 plist 或任何其他格式来获得结果 我一直在尝试从此文件中读取任何数据 并在标签上显示该数据 我尝试过预填充文件 在读取文件之前保存到文件
  • 使用 Boto 读取 S3 中文件的一部分

    我正在尝试读取存储在 S3 中的 700MB 文件 然而我只需要位置 73 到 1024 之间的字节 我试图找到一个可用的解决方案 但未能成功 如果有人能帮助我 那将是一个很大的帮助 S3支持使用 Range HTTP 标头的 GET 请求
  • 在用户提交的数据中不转义 & 符号是否存在安全风险?

    在显示用户生成 提交的信息时 转义其他特殊字符但不更改与号是否存在安全风险 我想让我的用户自由输入 html 实体 十六进制和十进制特殊字符 而不会给我的清理程序增加不必要的复杂性 这完全取决于数据放入的上下文 在 HTML 中 表示纯文本
  • 我们可以用二叉搜索树来模拟堆操作吗?

    我想知道我们是否可以使用二叉搜索树来模拟堆操作 插入 查找最小值 删除最小值 即使用 BST 来完成相同的工作 这样做有什么好处吗 我们当然可以 但具有平衡的 BST 最小值是最左边的元素 最大值是最右边的元素 找到这些元素是O logn
  • 在通过 loadGeoJson() 加载的功能上创建 Infowindows

    如果这是基础知识 我深表歉意 但我的 JavaScript 知识非常有限 我正在制作一个地图 该地图加载我在 ArcGIS 中创建的 GeoJSON 数据 并使用 ogr2ogr 重新格式化为 GeoJSON 我已经加载了地图并显示了 Ge
  • 如何从特定 FPS 的视频中提取帧?

    我能够提取特定的帧test mp4使用以下代码创建文件 import cv2 def get frames cap cv2 VideoCapture test mp4 i 0 while cap isOpened ret frame cap
  • 如何在 Kotlin 中向 Gson 注册 InstanceCreator?

    我可以使用代码1来保存MutableList
  • 在浏览器中加载 ionic 项目时提示错误“localhost:8100 said gap_init:3”消息

    当我在任何页面代码中进行更改时 都会显示一条提示消息 localhost 8100说gap init 3 然后我单击 确定 按钮 另外显示 5 条消息 关闭浏览器并再次打开效果良好 但进行任何更改都会显示此提示 如何修复它 提前致谢提示错误
  • 从基类指针访问子类成员 C++

    我有一系列自定义类 Student 对象 CourseStudent和ResearchStudent都继承自Student 并且Student的所有实例都是其中之一 我有一个函数来遍历数组 确定每个学生的子类型 然后对它们调用特定于子类型的
  • 将 adb 与具有相同序列号的多个设备一起使用[重复]

    这个问题在这里已经有答案了 我的电脑连接了两个设备 但是当我启动adb时 它们的序列号都是 0123456789ABCDEF When I try to install an APK the installation fails with
  • Haskell:使用 $ 的函数应用

    在下面的代码片段中 您可以看到我用 Haskell 编写的两个 collat z 函数 对于递归应用程序 我在第一个示例 collat z 中使用括号来获得正确的优先级 由于我刚刚学习了 的函数应用 我尝试使用那个东西重写函数 collat
  • 如何在 python 中创建一个加密安全的随机数?

    我正在用 python 制作一个项目 我想创建一个加密安全的随机数 我该怎么做 我在网上读到 常规随机发生器生成的数字在加密上并不安全 并且该函数os urandom n 返回给我一个字符串 而不是数字 由于您想要生成某个特定范围内的整数
  • cURL 非常慢

    有谁知道为什么 php5 下的 cURL 会如此缓慢地失败 即使在 45 秒超时时 在 speedO light 服务器上下载几 kb 文件 代码按要求放在此处 尽管我进一步提高了超时 以使脚本在执行期间不会失败 并将 useragent
  • 获取 git stash 父提交

    有没有办法检索最初创建存储的提交 使用默认命令创建存储时git stash原始提交保存在隐藏消息中 因此通常如下所示 stash 0 WIP on master abc123 This is the message of some comm
  • Java有立即调用的匿名函数吗? [复制]

    这个问题在这里已经有答案了 例如 我可能想做这样的作业 在 JavaScript 中 var x function do some searching calculating return 12345 在 Java 中 我如何使用 Lamb
  • 旋转 UIAlertView

    我创建了一个自定义 UIAlertView 通过子类化它并弄乱它的show函数 它有一些自定义子视图并且具有非标准尺寸 当我创建并显示它时 它工作正常 但是 当旋转设备时 警报会旋转 然后返回到其默认大小 任何想法要覆盖什么功能 或者我应该
  • 不带参数的类方法会产生 TypeError

    这段代码 class testclass def init self x y self x x self y y self test def test print test if name main x testclass 2 3 yiel