当前位置: 首页 > 图灵资讯 > 行业资讯> Python类调用实例方法

Python类调用实例方法

发布时间:2025-10-27 16:11:57

在 Python 默认情况下,类体中定义的方法是实例方法,通过对象调用实例方法。

但是要提醒大家的是,Python 类在很大程度上是命名空间。当程序在类别中定义变量和方法时,它们与上述定义变量和定义函数没有太大区别。比较以下代码:

#foo函数定义了全球空间
deffoo():
print("全局空间的foo方法")
#bar变量的全局空间
bar=20
classBird:
#定义Bird空间的foo函数
deffoo():
print("foo方法Bird空间")
#bar变量定义Bird空间
bar=200
#调用全球空间的函数和变量
foo()
print(bar)
#调用Bird空间的函数和变量
Bird.foo()
print(Bird.bar)

上面的代码在整体空间和 Bird 类(Bird 空间)分别定义 foo() 函数和 bar 从定义它们的代码来看,变量几乎没有区别,只是在 Bird 当类中定义它们时,需要缩进。

下一步是调用程序 Bird 空间内的 bar 变量和 foo() 函数(方法)只需添加 Bird. 前缀就够了,说明完全可以通过 Bird 类来调用 foo() 函数(方法)。这是类调用实例方法的证明。

现在问题来了。如果使用类调用实例法,则该方法的第一个参数(self)如何自动绑定?例如,以下程序:

classUser:
defwalk(self):
print(self,'正在慢慢走')
#通过类调用实例法
User.walk()

操作上述代码,程序将报告以下错误:

TypeError:walk()missing1requiredpositionalargument:'self'

请查看程序的最后一行代码,并调用 walk() 缺乏引入的方法 self 因此,参数导致程序错误。这表明在使用类调用实例方法时,Python 调用者不会自动绑定到第一个参数。事实上,它不能自动绑定,所以实例方法的调用者是类别本身,而不是对象。

如果程序仍然希望使用类别来调用实例方法,则必须手动将参数值传输到该方法的第一个参数。例如,将上述粗体代码改为以下形式:

u=User()
#该方法的第一个参数绑定参数值
User.walk(u)

这个代码显式为 walk() 该方法的第一个参数绑定了参数值,这种调用效果完全相当于执行 u.walk()。

实际上,当通过时 User 类调用 walk() 在实例方法中,Python 只需手动绑定第一个参数的参数值,不需要绑定 User 因此,也可以使用以下代码进行调用:

#Fkit字符串参数值绑定是该方法的第一个参数
User.walk('fkit')

若按上述方式绑定,则 'fkit' 字符串将被传递 walk() 方法的第一个参数 self。因此,运行上述代码时,会看到以下输出结果:

fkit正在慢慢行走

总结

Python 类别可以调用实例法,但在使用类别调用实例法时,Python 第一个参数不会自动作为方法 self 绑定参数值;程序必须是第一个参数 self 传入方法调用者。这种调用方法被称为“未绑定方法”。

相关文章

Python类调用实例方法

Python类调用实例方法

2025-10-27
Python之初识类与对象

Python之初识类与对象

2025-10-27
Python面向对象编程之组合关系

Python面向对象编程之组合关系

2025-10-27
Python查看模块(变量、函数、类)方法

Python查看模块(变量、函数、类)方法

2025-10-27
Python内置函数一览表

Python内置函数一览表

2025-10-27
python self用法详解

python self用法详解

2025-10-26