Skip to main content

Python 类的常用装饰器

Published 1 min readMarkdown
Python 类的常用装饰器

类的常用装饰器

classmethod

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

staticmethod

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

property

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

代码

# 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)

1 view

No comments yet. Be the first to comment.

More from this blog