绑定方法与非绑定方法,反射,内置方法

类中定义函数分为绑定方法和非绑定方法两大类

绑定方法的特殊之处就是绑定给谁就由谁来调用 谁来调用就会将谁当做第一个参数自动传入

绑定方法也分为两种:

1.绑定给对象的方法  在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的

2.绑定给类的方法  为类中定义函数添加一个装饰器classmethod 就是绑定类的

非绑定方法就是一个普通函数 与类和对象都不绑定 类和对象都可以调用,但无论谁来调用都只是一个普通函数 没有自动传值效果

非绑定方法就是为类中的定义函数添加一个装饰器staticmethod

class Foo:
    def func1(self):
        print('func1',self)
    @classmethod
    def func2(cls):
        print('func2',cls)

    @staticmethod
    def func3(x):
        print('func3',x)

obj =Foo()
#绑定给对象的方法
obj.func1()
print(obj.func1)
#绑定给类的方法
Foo.func2()
print(Foo.func2)
#非绑定方法
Foo.func3(1)
obj.func3(1)
例子

反射是通过字符串来操作属性

class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def info(self):
        print('%s %s'%(self.name,self.age))

obj = People('xia',20)

print(hasattr(obj,'name'))

print(getattr(obj,'name'))

setattr(obj,'name','egon')
print(obj.__dict__)

delattr(obj,'name')
print(hasattr(obj,'name'))
print(getattr(obj,'name',None))
View Code

内置方法

isinstance指判断是否是一个对象

issubclass指判断是否是一个子类

__str__是会在对象被打印时自动触发,然后将返回值返回给print功能进行打印

__del__会在对象被删除时自动触发执行 用来在对象被删除前回收系统资源

原文地址:https://www.cnblogs.com/xiamenghan/p/9853407.html