迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

修复 Python 错误TypeError: Missing 1 Required Positional Argument

作者:迹忆客 最近更新:2023/05/30 浏览次数:

类是面向对象编程语言的基本特征之一。 每个对象都属于 Python 中的某个类。

我们可以创建我们的类作为蓝图来创建相同类型的对象。 我们使用 class 关键字在 Python 中定义一个类。

Python 中一个非常重要的特性是在定义类时使用 self 属性。 self 属性表示对象的数据并将参数绑定到对象。

本篇文章将讨论 Python 中的 TypeError: missing 1 required positional argument: 'self' 错误以及我们如何解决它。

让我们讨论引发此错误的情况。


不在 Python 中实例化对象

位置参数是指我们为函数提供的数据。 为了创建类对象,我们使用构造函数。

如果类需要任何数据,我们必须将其作为构造函数中的参数传递。

当我们忘记实例化类对象或错误地实例化类实例时,会引发此错误。

请参阅下面的代码。

class Delft:
   def __init__(self, name):
       self.name = name
   def fun(self):
       return self.name

m = Delft.fun()
print(m)

输出:

TypeError: fun() missing 1 required positional argument: 'self'

在上面的例子中,我们得到错误是因为我们忘记实例化类的实例并试图访问类的函数。 因此,未定义 self 属性,无法将属性绑定到对象。

请注意,这是一个 TypeError,在对给定数据类型执行某些不受支持的操作时在 Python 中引发。 不支持不创建实例直接访问类方法。


在 Python 中错误地实例化类对象

可能发生此错误的另一种情况是当我们错误地实例化类对象时。 这可能是一个小的打字错误,例如忽略括号或未提供参数。

例如:

class Delft:
   def __init__(self, name):
       self.name = name
   def fun(self):
       return self.name

m = Delft
a = m.fun()
print(a)

输出:

TypeError: fun() missing 1 required positional argument: 'self'

现在让我们在下面的部分中讨论如何修复此错误。


修复 Python 中的 TypeError: missing 1 required positional argument: 'self' 错误

要修复此错误,我们可以创建类实例并使用它来访问类方法。

请参阅下面的代码。

class Delft:
   def __init__(self, name):
       self.name = name
   def fun(self):
       return self.name

m = Delft('Stack')
a = m.fun()
print(a)

输出:

Stack

在示例中,我们首先创建类的实例。 然后使用它来访问类方法以返回一些值并打印它; 错误已修复。

另一个修复涉及使用静态方法。 静态方法是绑定到特定类而不是对象的函数。

我们可以使用 @staticmethod 装饰器来创建这样的方法。

例如:

class Delft:
   def __init__(self, name):
       self.name = name
   @staticmethod
   def fun(abc):
       return abc

a = Delft.fun('Stack')
print(a)

输出:

Stack

在上面的示例中,我们将 fun() 函数更改为静态函数。 这样,我们可以在不实例化任何类对象的情况下使用它。


总结

本教程讨论了 Python 中的 TypeError: missing 1 required positional argument: 'self' 错误以及我们如何解决它。

我们讨论了可能发生此错误的情况以及如何通过实例化类的对象来修复错误。 我们也可以使用静态方法来解决这个错误。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

How much do you know about the Prototype Chain?

发布时间:2025/02/21 浏览次数:150 分类:JavaScript

The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start

Pandas map()

发布时间:2024/04/24 浏览次数:1652 分类:Python

本教程解释了我们如何使用 Series.map()方法将 Pandas Series 的值替换为另一个值。

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便