修复 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' 错误以及我们如何解决它。
我们讨论了可能发生此错误的情况以及如何通过实例化类的对象来修复错误。 我们也可以使用静态方法来解决这个错误。
相关文章
Python 错误 OverflowError: Python Int Too Large to Convert to C Long
发布时间:2023/05/31 浏览次数:144 分类:Python
-
本篇文章将介绍 Python 中的 OverflowError: python int too large to convert to c long 错误。当算术结果超出数据类型的给定限制时,Python 中会引发 OverflowError。
Python 错误 UnicodeDecodeError: ASCII Codec Can't Decode Byte in Position: Ordi
发布时间:2023/05/31 浏览次数:90 分类:Python
-
在本文中,我们将学习如何解决在代码执行期间发生的 UnicodeDecodeError。 我们将查看导致此错误的不同原因。
Python 错误 NameError: Name Execfile Is Not Defined
发布时间:2023/05/31 浏览次数:81 分类:Python
-
本篇文章介绍了 NameError: name execfile is not defined、其原因以及在 Python 3 中解决此错误的方法。
Python 错误 IndentationError: Unindent Does Not Match Any Outer Indentation Lev
发布时间:2023/05/31 浏览次数:50 分类:Python
-
我们还将找到在 Python 中解决此错误的方法。 让我们从 Python 中的 IndentationError 开始。Python 中的缩进规则
Python 错误 ImportError: No Module Named Requests
发布时间:2023/05/31 浏览次数:104 分类:Python
-
错误 ImportError: No module named requests 意味着 Python 解释器无法导入 requests 模块。本篇文章展示了修复Python中 ImportError: No module named requests 错误的方法。
Python 中错误 ImportError: No Module Named Sklearn
发布时间:2023/05/31 浏览次数:194 分类:Python
-
在 Python 中,sklearn 被用作机器学习工具,用于在回归、集群等方面创建程序。很多时候,导入它会抛出错误—— No module named sklearn。Python中错误ImportError: No module named sklearn的原因
Python 中 ImportError: Missing Required Dependencies Numpy 错误
发布时间:2023/05/30 浏览次数:113 分类:Python
-
在本文中,我们将了解 ImportError: Missing required dependencies numpy,导致 ImportError 的原因以及如何使用命令行界面 (CLI) 解决它。
修复 Python 错误 SyntaxError: Invalid Token
发布时间:2023/05/30 浏览次数:85 分类:Python
-
在本文中,我们将了解什么是 SyntaxError: invalid token Python 错误以及如何修复它。 令牌是语句的重要组成部分,组合这些令牌可为 Python 编译器提供有意义的模式。
修复 Python 错误 SyntaxError: 'break' Outside Loop
发布时间:2023/05/30 浏览次数:93 分类:Python
-
本篇文章将讨论 Python 的 SyntaxError: 'break' outside loop 错误。循环和条件语句是任何编程语言不可或缺的一部分。修复 Python 中的 SyntaxError: 'break' outside loop 错误