绑定方法 对象绑定方法 / 类的绑定方法
对象绑定方法: 定义在类内部,没有装饰器装饰的方法,都是对象的绑定方法
需要对象来调用,对象调用的时候,会把自身传入
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__ # 实例对应的类(仅新式类中)