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