Python 类的常用装饰器

2022-05-18 14:29:42 浏览数 (1)

类的常用装饰器

classmethod
功能
  • 将类函数可以不经过实例化而直接被调用
用法
代码语言:javascript复制
@classmethod
def func(cls, ...):
	do
参数介绍
  • cls替代普通类函数中的self,
  • 变为cls,代表当前操作的是类
staticmethod
功能
  • 将类函数可以不经过实例化而直接被调用, 被改装饰器调用的函数不许传递self或cls函数, 且无法在该函数内调用其他类函数或类变量
用法
代码语言:javascript复制
@staticmethod
def func(...):
	do
参数介绍
  • 函数体内无cls或self参数
property
用法
代码语言:javascript复制
@property
def func(self):
	do
参数介绍
  • 无重要参数说明
代码
代码语言:javascript复制
# coding:utf-8

class Test(object):
    def __init__(self, a):
        self.a = a

    def run(self):
        print('run')
        self.dump()
        self.sleep()

    @classmethod
    def dump(cls):
       print('dump')
       # cls.run()
       # 无法在一个classmethod函数中调用self函数
    @staticmethod
    def sleep():
        # self.dump()
        print('i want sleep')

t = Test('a')
t.run()
# Test.dump()
# print('------')
# Test.sleep()
# t.sleep()
# t.dump()

class Test1(object):
    def __init__(self, name):
        self.__name = name

    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, value):
        self.__name = value

t1 = Test1(name='dewei')
print(t1.name)
# t1.name = '小慕'
# print(t1.name)
t1.name = '小慕'
print(t1.name)

0 人点赞