类的常用装饰器

classmethod

功能
  • 将类函数可以不经过实例化而直接被调用
用法
@classmethod
def func(cls, ...):
do
hosted with ❤ by GitHub
参数介绍
  • cls替代普通类函数中的self,
  • 变为cls,代表当前操作的是类

staticmethod

功能
  • 将类函数可以不经过实例化而直接被调用,
    被改装饰器调用的函数不许传递self或cls函数,
    且无法在该函数内调用其他类函数或类变量
用法
@staticmethod
def func(...):
do
hosted with ❤ by GitHub
参数介绍
  • 函数体内无cls或self参数

property

用法
@property
def func(self):
do
hosted with ❤ by GitHub
参数介绍
  • 无重要参数说明

代码

# 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)
hosted with ❤ by GitHub