绑定方法与非绑定方法
绑定方法
分为对象绑定方法和类的绑定方法
绑定方法的特殊之处
绑定给谁就是谁来调用
类的绑定方法
绑定给类,类来调用,会把类自身传过来
不需要通过对象 ,只需要通过类就能获取到一些东西的时候,用类的绑定方法
当然,类的绑定方法也可以由对象来调用
class Person:
def __init__(self,name,age):
print(self)
self.name=name
self.age=age
# @classmethod
# def test(cls):
# print(cls)
# print('类的绑定方法')
# #类实例化产生对象,返回
# return cls('lqz',19)
@classmethod
def get_obj_by_name(cls,name):
#1 去文件中查找名字为 name 的pickle文件
#2 反序列化成对象
#3 return 对象
pass
def get_obj_by_name(self,name):
# 1 去文件中查找名字为 name 的pickle文件
# 2 反序列化成对象
# 3 return 对象
pass
per1=Person.test()
per2=Person('nick',18)
admin=Person.get_obj_by_name('lqz')
admin.create()
类的绑定方法可以由对象来调
class Person:
'''
注释的内容
'''
def __init__(self,name,age):
# print(self)
self.name=name
self.age=age
@classmethod
def test(cls):
print(cls)
print('类的绑定方法')
# Person.test()
p=Person('nick',18)
#对象可以调用类的绑定方法,也是把该对象的类传入
p.test()
总结:
-classmethod 是个装饰器,放在类中函数的上面,该函数就变成了类的绑定方法
-类的绑定方法由类来调用,自动把类传过去(对象也可以调,一般不用)
-类的绑定方法用在什么地方?
-不需要通过对象,只需要通过类就能完成某些事的时候,就把该方法定义为类的绑定方法
非绑定方法
定义在类内部的普通方法,谁都不绑定
对象/类都可以调用,但是不会自动传值
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def object_method(self):
print('我是对象绑定方法,对象来调用我')
@classmethod
def class_method(cls):
print('我是类的绑定方法,类来调用我')
#当成一个普通函数,只不过是写在类内部的
@staticmethod
def static_method():
print('我是静态方法,谁都不绑定')
#静态方法(非绑定方法)
#类来调用
Person.static_method()
# 对象来调用
p=Person('nick',19)
p.static_method()