本文介绍了示例方法在Python类中的工作原理,内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。
在面向对象编程中,类中的方法有多种形式:实例方法、静态方法、类方法,甚至抽象方法。让我们讨论一下实例方法在Python中是如何工作的,稍后再讨论其他方法。
要首先定义最简单类:
班级人员:
def __init__(自我,姓名):
self.name=name
def eat(self):
print(self) # __main__。0x00处的人物对象
print(type(self))# class ' _ _ main _ _。“人”
Print(self.name' is eating ')在这里,eat是一个实例方法,类似于普通函数。唯一的区别是必须指定参数本身。虽然名字可以任意命名,但习惯上的名字是self。什么是自我?它表示Person类的实例对象,就像在Java中一样。请看下面的测试代码。
p=人(“张三”)
P.eat()p和self指向同一个实例对象。
所以可以直接通过类调用吗?不可能!
Person.eat()
错误: eat()缺少1 required位置参数:“self”那么为什么不需要通过实例P传递self参数来调用eat方法呢?这从函数和方法的区别开始。请看下面的代码:
打印(人.吃)
印刷
#输出
函数people . eat at0x 000001 bb 242 aae 8
绑定方法人。吃__主要的_ _。0x000001bb242b4b38处的person对象前者是函数,后者是方法。有人说函数在类外定义,方法在类内定义,说明这种说法是不完整的。那么它们的区别是什么呢?
首先,方法与对象关联,但函数不关联。p.eat是一个绑定了实例对象的方法。函数的所有参数都需要显式传递,而方法中的数据需要隐式传递。Person.eat是一个函数,参数应该显式传递,Person.eat(p)
方法与实例对象绑定,调用时不需要传递实例对象,直接调用p.eat()即可,自身参数Python会自动传递,重复会报错。
吃饭
Type: eat()接受1个位置参数,但给出了2个,因此,本质上,
P.eat()相当于Person.eat(p)。那么,比如方法,可以从语言设计的角度去掉self参数吗?Python之父吉多范罗苏姆写了一篇文章解释了这个问题,因为“显式比隐式好”
下面是实例方法在Python类中的工作原理。希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/86587.html