绑定方法 对象绑定方法 / 类的绑定方法
对象绑定方法: 定义在类内部,没有装饰器装饰的方法,都是对象的绑定方法
需要对象来调用,对象调用的时候,会把自身传入
class Person:
def __init__(slef,name='my'):
self.name=name
self.age=17
def change_name(self,name):
self.name=name
p = Person()
p.change_name('mayue')
# 本质就是
# Person.change_name(p,'mayue')
绑定方法: 特殊之处,绑定给谁就是谁来调,并且会把自身传过来
类的绑定方法: 绑定给类的,类来调用,会把类的自身传过来
类的绑定方法用在什么地方 ? :
不需要通过对象,只需要通过类就能获取到一些东西的时候,用类的绑定方法
class Person:
def __init__(self,name,age):
self.name=name
self.age.age
@classmethod #
def test(cls):
print(cls) # cls相当于Person
print("类的绑定方法")
# 类实例化产生对象,返回
return cls('hys', 16)
@classmethod #
def get_obj_by_name(cls,name):
# 取到类的名字
type_class = cls.__name__.lower() # 把取到的类似转化为小写赋值给type_calss
#思路#1 去文件中查找名字为 name 的pickle文件
#2 反序列化成对象
#3 return 对象
pass
# per1 = Person.test()
# ↑↓作用是一样的↑↓
# per2 = Person('mayue', 17)
admin = Person.get_obj_by_name('hys')
admin.create()
类的绑定方法可以由对象来调
class Person:
def __init__(self,name,age):
self.name=name
self.age.age
@classmethod # 默认是对象的绑定方法,把对象传进来,然后@classmethod会把对象转成类---|__> 一
def test(cls): # 再调这种方法传进来----------------------------------------------|__> 句话
print(cls) # cls相当于Person
print("类的绑定方法")
Person.test()
p = Person('xiaohan', 16)
# 对象可以调用类的绑定方法,也是把该对象的类传入(用的比较少,一般不会用对象调用类的绑定方法)
p.test()
python为类内置的特殊属性
类名.__name__ # 类的名字(字符串)
类名.__doc__ # 类的文档字符串; 可以拿到三引号注释
类名.__bases__ # 类所有父类构成的元组(在讲继承时会讲)
类名.__dict__ # 类的字典属性
类的.__module__ # 类定义所在的模块
类名.__class__ # 实例对应的类(仅新式类中)
总结:
-classmethod 是个装饰器,放在类中函数的上面,该函数就变成了类的绑定方法
-类的绑定方法由类来调用,自动把类传过去(对象也可以调用,一般不用)
-类的绑定方法用在什么地方?
-不需要通过对象,只需要通过类就能完成某些事的时候,就把该方法定义为类的绑定方法
在 Python 中,对象方法是绑定方法,而不是类方法。绑定方法是绑定到类的实例上的方法,它们可以访问实例的属性和其他方法。这些方法在定义时通常接受 self 参数作为第一个参数,以表示实例本身。
类方法是与类相关联的方法,它们可以访问类级别的属性和其他方法。这些方法使用 @classmethod 装饰器来标识,并接受 cls 参数作为第一个参数,以表示当前类。
静态方法与类和实例无关,它们通常用于实用函数,不接受特殊的参数。这些方法使用 @staticmethod 装饰器来标识。