一、绑定方法与非绑定方法
(一)绑定方法
- 绑定给对象的方法,我们直接使用def定义的方法,在我们使用到这个方法的时候,会把对象的当成第一个参数传递。由对象来调用,会自动把对象当成第一个参数传入。
class People:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def tell_into(self): #定义一个查看对象的方法,self是创建的对象
print(self.name,self.age,self.sex)
def print_count(self): #self是创建的对象
print(People.count)
- 绑定给类的方法
- 绑定给类的方法:我们可以使用对象和类访问,但是会把类当作第一个参数传入
class People:
count = 0
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def tell_into(self): #定义一个查看对象的方法
print(self.name,self.age,self.sex)
@classmethod #用该方式调用类方法
def print_count(cls): #此处cls是一个类
print(cls.count)
如果的需要用到self比较多,就用绑定给对象的方法,否则就用绑定给类的方法
(二)非绑定方法
没有自动传值这一说法,就相当于在类里边定义了一个方法,不需要传任何值
class People:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
@staticmethod #非绑定方法,不需要传参数
def fun():
print(1 + 1)
print(2 + 2)
print(1 + 3)
二、反射
通过字符串的形式操作对象
class Person:
def __init__(self, name,age):
self.name = name
self.sex = age
def show(self):
print(f"姓名{self.name}年龄{self.age}")
user_object = Person("小红", 18)
#detattr(对象, "成员")
v1 = getattr(user_object, "name")
print(v1)
#运行结果:小红
#setattr(对象,"成员",值)
setattr(user_object, "name","小蓝")
v2 = getattr(user_object, "name")
print(v2)
#运行结果:小蓝
#hastattr(对象,"成员"):判断是否存在
print(hasattr(user_object, "name"))
#运行结果:True
(v2)
#运行结果:小蓝
#hastattr(对象,“成员”):判断是否存在
print(hasattr(user_object, “name”))
#运行结果:True