面向对象-类常用的属性和类的装饰器

类常用的属性

1、属性

  • 类的说明

    类名.__doc__

  • 返回类名称

    类名.__name__

  • 返回单继承的父类

    类名.__base__

  • 返回多继承的所有父类

    类名.__bases__

  • 以字典形式返回类中的所有属性和方法

    类名.__dict__

2、使用

class A:
    '''
    这是一个测试类、
    '''
    name = 'lucky'

    def say(self):
        pass


class B:
    pass

class C(B):
    pass

class D(A, B):
    pass

print(A.__doc__)
print(A.__name__)
print(C.__base__)
print(D.__bases__)
print(A.__dict__)

类的装饰器

  • 系统方法

    __call__

  • 格式

    class A:
    	...
    	def __call__(self):
    		pass
    
  • 使用

    class A:
        def __call__(self, *args, **kwargs):
            print('---------------call')
    
    
    a = A()
    # 对象() 对类中__call__ 方法进行触发
    a()
    
  • 普通装饰器

    class Wrapper:
        # 构造方法
        def __init__(self, f):
            self.f = f
    
        # call方法
        def __call__(self, *args, **kwargs):
            print('-------------')
            res = self.f(*args, **kwargs)
            print('-------------')
            return res
    
    @Wrapper
    def fun():
        print('普通的fun函数')
    # fun = Wrapper(fun)
    fun()
    
  • 带参装饰器

    class Wrapper:
        def __init__(self, val=1):
            self.val = val
    
        # call
        def __call__(self, f):
            def inner(*args, **kwargs):
                print('--------------------')
                res = f(*args, **kwargs)
                print('--------------------')
                return res
            return inner
    # w = Wrapper()
    # inner = w(fun)
    @Wrapper()
    def fun(name, age):
        print('我叫:{} 我今年{}岁了'.format(name, age))
    # print(fun)
    fun('lucky', 18)
    
posted @ 2022-03-18 14:19  寻月隐君  阅读(31)  评论(0编辑  收藏  举报