欢迎来到“只读课堂”!
实例方法
首先我们需要了解一下我们一直都写的这个 self :
这里我们提到的 self 参数,这里的 self 是指向了抽象出来的一个实例
在类中定义参数时,如果你的这个函数只能是实例出来的实际对象可用,那么你需要加一个 self。
加了这根指针的意义也在于,如果你同一个类实例出来了多个对象,每个对象都含有一个相同的函数方法,如果你不明确标识这个方法是属于哪个对象的,那么会造成混乱,所以语言发明的人就发明了这个跟 self 指针,用来指向你当前实例出来的类对象
self并且是 python 类默认把第一个参数当作这个指向类实例的参数,如果你这里定义成其他字符也是 OK 的
注意, self 是约定俗成的一种写法,我们也可以把这个位置的参数命名为别的样子,但是阅读性可能会差
In [6]:
class A:
def func(self,a,b):
print('a+b',a+b)
In [9]:
a = A()
In [4]:
#a.func是可以使用它的
In [10]:
a.func(10,20)
a+b 30
In [11]:
A.func()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-11-21f556f4a136> in <module>()
----> 1 A.func()
TypeError: func() missing 3 required positional arguments: 'self', 'a', and 'b'
In [12]:
#这里报错了
In [13]:
#可能是参数不对
In [14]:
A.func(10,20)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-df21a9ceb7ef> in <module>()
----> 1 A.func(10,20)
TypeError: func() missing 1 required positional argument: 'b'
In [15]:
#还是报错了
In [16]:
#这就证明类并不能使用实例
In [18]:
b = A()
In [20]:
a.func
Out[20]:
<bound method A.func of <__main__.A object at 0x00000286B9A6AF60>>
In [21]:
b.func
Out[21]:
<bound method A.func of <__main__.A object at 0x00000286B9A6A2B0>>
我们实例的方法只能是通过实例来调用
In [22]:
#这里我们实例出来的对象是可以调用这两个函数的
In [23]:
#加了self参数之后,避免了多个同类之间对象调用同一个函数时会混乱的情况,计算机是不会做选择的。
本次只读课堂的python教程就到这了,欢迎下一次的收看!