1. 基本含义解释说明
@staticmethod 静态方法
@classmethod 静态的类方法
@property 绑定类的属性与获取
2. 代码介绍如下:
#!/usr/bin/env python3
#! -*- conding utf-8 -*-
"""
Project Name: 20190909
File Name: test2
Author: Swift
DateTime: 2019-09-16 23:01
"""
class Swift(object):
def __init__(self, width, height):
self.width = width
self.height = height
def mySelfFunc(self):
print("mySelfFunc")
@staticmethod
def staticFunc():
print("staticFunc")
@classmethod
def classFunc(cls):
print("classFunc")
@property
def getWith(self):
return self.width
@property
def getHeight(self):
return self.height
a = Swift(1, 2)
print("Myself " + "-"*60)
a.mySelfFunc()
print("staticmethod " + "-"*60)
Swift.staticFunc()
print("classmethod " + "-"*60)
Swift.classFunc()
print("property " + "-"*60)
print(a.getHeight)
print(a.getWith)
#==># Myself ------------------------------------------------------------
#==># mySelfFunc
#==># staticmethod ------------------------------------------------------------
#==># staticFunc
#==># classmethod ------------------------------------------------------------
#==># classFunc
#==># property ------------------------------------------------------------
#==># 2
#==># 1
3. 解释说明
如上代码所示,
使用staticmethod装饰器时,在类中定义函数时,括号中无需传递self参数,且在使用时也无需实例化类,可直接类名调用方法。
使用classmethod装饰器时,在类中定义函数时,括号中无需传递self参数,但是要传递cls的参数,这个参数为类,但是在使用时也无需实例化类,也可以直接调用函数使用。
使用property装饰器时,在使用时可发现不需要在方法后面加入括号,可以直接当作为一个类的属性来使用。
以上即为本人对这三个装饰器的基本使用的解释说明,如有问题请即使提出,共勉大家一起学习探讨。