【一】绑定方法与非绑定方法介绍
【1】绑定方法
- 绑定给谁,谁调用就将谁作为第一个参数传入
(1)绑定到类的方法
- 使用classmethod装饰器来装饰
- 将类作为第一个参数传入
- 对象也可调用,会将实例化对象的类作为第一个参数传入
(2)绑定到对象的方法
- 通过
对象.方法
的方法实现,将对象作为第一个参数传入
【2】非绑定方法
- 使用
staticmethod
装饰器装饰 - 谁都可以调用,不管是对象或类,而且没有自动传值一说
- 可以说只是一个工具
【二】绑定方法
【1】绑定给对象的方法
class Hero:
name = '后羿'
work = '射手'
location = '王者峡谷'
def show_info(self):
print(f'{self.name}是一个{self.work},在{self.location}')
hero_1 = Hero()
hero_1.show_info() # 后羿是一个射手,在王者峡谷
- 会自动将
hero_1
这个对象传入到show_info
第一个参数当中
【2】绑定给类的方法(classmethod)
class Hero:
name = '后羿'
work = '射手'
location = '王者峡谷'
def show_info(self):
print(f'{self.name}是一个{self.work},在{self.location}')
@classmethod
def show_game(cls):
print(cls)
print('我是绑定给类的方法')
Hero.show_game()
"""
后羿是一个射手,在王者峡谷
<class '__main__.Hero'>
我是绑定给类的方法
"""
- 可以看到
cls
传入的就是Hero
这个类
【三】非绑定方法
- 在类内部使用
staticmethod
装饰器装饰方法,它就变成了非绑定方法,也就是一个普通的方法,不绑定给任何人,且没有自动传值的效果
import time
class Hero:
name = '后羿'
work = '射手'
location = '王者峡谷'
def show_info(self):
print(f'{self.name}是一个{self.work},在{self.location}')
@classmethod
def show_game(cls):
print(cls)
print('我是绑定给类的方法')
@staticmethod
def show_time():
print(time.time())
Hero.show_time() # 1704334200.4708316
hero_1 = Hero()
hero_1.show_time() # 1704334200.4708316
标签:Hero,show,self,绑定,面向对象,print,方法
From: https://www.cnblogs.com/Hqqqq/p/17963203