修复 Python 错误TypeError: Missing 1 Required Positional Argument
类是面向对象编程语言的基本特征之一。 每个对象都属于 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)
输出:
在上面的例子中,我们得到错误是因为我们忘记实例化类的实例并试图访问类的函数。 因此,未定义 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)
输出:
现在让我们在下面的部分中讨论如何修复此错误。
修复 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' 错误以及我们如何解决它。
我们讨论了可能发生此错误的情况以及如何通过实例化类的对象来修复错误。 我们也可以使用静态方法来解决这个错误。
相关文章
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 的值替换为另一个值。
Pandas apply, map 和 applymap 的区别
发布时间:2024/04/21 浏览次数:135 分类:Python
-
本教程解释了 Pandas 中 apply()、map()和 applymap()方法的区别。
Pandas 中的 Join 和 Merge 有什么区别
发布时间:2024/04/20 浏览次数:72 分类:Python
-
本文将为我们介绍 pandas 中 join 和 merge 方法之间的区别。
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。