4、实例方法
说明:
- 类中定义的方法默认是实例方法
- 实例方法第一个参数会被自动绑定到方法的调用者(该类的实例),因此这些实例方法至少应该定义一个参数,该参数通常被命名为 self
class Book:
def desc(self): # 实例方法,第一个参数推荐使用 self(不强制),有更好的可读性
self.name = 'Python'
self.price = 100
print('图书为%s,价格为%d' % (self.name, self.price ))
def info(self): # 实例方法
print('其他')
b = Book()
b.desc()
print('-'*30)
b.info()
图书为Python,价格为100
------------------------------
其他
1)操作实例方法
class Display():
def test(self):
print('test方法')
-
调用实例方法
-
通过对象调用实例方法
说明:实例方法属于对象,可对象直接调用
im = Display() im.test()
test方法
-
通过类调用实例方法
说明:test 方法为实例方法,应该用对象调用,但 Python 允许用类调用,此时为“未绑定的方法”,因此必须为 self 参数传入参数值
im = Display() Display.test(im)
test方法
-
-
新增实例方法
说明:新增的方法默认不会自动绑定 self 参数
-
方法1:传入参数值
def fn(self): print('新增的方法') im.foo = fn # 新增实例方法 im.foo(im) # 新增的方法默认不会自动绑定 self 参数,因此调用时需要传入参数值
新增的方法
-
方法2:使用 types 模块中的 MethodType() 方法
from types import MethodType im.foo = MethodType(fn, im) # 新增方法:将 fn 函数包装成方法,且 im 自动绑定第一个参数 im.foo() # 直接调用
新增的方法
-
-
删除实例方法
del im.foo # 删除实例方法,可以删除新增的实例方法
2)实例方法返回self
说明:
- self 参数可当成实例方法的返回值
- self 参数作为返回值时可多次连续调用方法
class Plant:
def __init__(self, height=2):
self.height = 2
def grow(self):
self.height += 1
return self
P = Plant()
print(P.height)
print('-'*30)
P.grow().grow().grow() # grow 方法 return self---self 本身又代表方法调用者:P
print(P.height)
2
------------------------------
5