1 . 修饰函数

看装饰器这一节

 

2. @staticmethod

相当于C++里的静态函数



#!/usr/bin/ env python
# -*- coding:utf-8 -*-

class Student(object):
#类属性
name = 'fdzwdt'
def __init__(self,name):
#实例对象属性
self.name = name

#实例方法,只能由实例对象来调用
def get_name_ins(self):
return self.name

#类方法,可以通过类来调用,也可以通过实例对象调用
@classmethod
def get_name_cls(cls):
return cls.name

#静态方法,可以通过类来调用,也可以通过实例对象调用
#主要功能就是对__init__构造函数进行重载
@staticmethod
def get_name_sta(name):
return Student(name).name
st = Student('weidt')
print('ins_name:'+st.get_name_ins())
print('cls_name:'+Student.get_name_cls())
print('sta_name:'+Student.get_name_sta('wdt'))


 

3. @classmethod

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。



#!/usr/bin/python
# -*- coding: UTF-8 -*-

class A(object):
bar = 1
def func1(self):
print ('foo')
@classmethod
def func2(cls):
print ('func2')
print (cls.bar)
cls().func1() # 调用 foo 方法

A.func2() # 不需要实例化


输出结果为:



func2
1
foo