1、参数args与kwargs:
*args是元组,如def fun(args): pass 传过去的参数是元组形式fun(1,2,3),args=(1,2,3);
*kwargs是字典型,如def fun(kwargs): pass 传过去的参数是元组形式fun(a=1,b=2,c=3),kwargs={"a":1,"b":2,"c":3};
2、@property修饰器
被修饰的方法,将可直接被当作类属性进行调用,使得python语言更加的简洁。
class Dec:
@property
def value(self):
return self.__value
@value.setter
def value(self, data):
self.__value = data
if __name__ == '__main__':
dec = Dec()
dec.value = 10
print(dec.value)
/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
Process finished with exit code 0
【注意】所传的值必须是私有变量,即self.__value。
3、@classmethod类方法修饰器
类方法:python中的类方法指的是可以直接用类名(也可用实例名)进行调用的方法,相当与java中的static方法。
class Dec:
@property
def value(self):
return self.__value
@value.setter
def value(self, data):
self.__value = data
@classmethod
def info(cls,data):
print('我是一个类方法,参数是>>'+str(data))
if __name__ == '__main__':
dec = Dec()
dec.value = 10
print(dec.value)
Dec.info(20)
下面添加类方法的注解,python中的类方法,相当于Java中的static修饰的方法,输出结果为:
/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
我是一个类方法,参数是>>20
Process finished with exit code 0
4、静态方法修饰器
静态方法:不依赖于python类及类实例,放在类里边仅仅是为了管理方便,其实也可以放到类外边
class Dec:
@property
def value(self):
return self.__value
@value.setter
def value(self, data):
self.__value = data
@classmethod
def info(cls,data):
print('我是一个类方法,参数是>>'+str(data))
@staticmethod
def staticInfo(data):
print('我是一个静态方法,参数是>>'+str(data))
if __name__ == '__main__':
dec = Dec()
dec.value = 10
print(dec.value)
Dec.info(20)
dec.info(30)
dec.staticInfo(40)
Dec.staticInfo(50)
/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
我是一个类方法,参数是>>20
我是一个类方法,参数是>>30
我是一个静态方法,参数是>>40
我是一个静态方法,参数是>>50
Process finished with exit code 0
5、各种方法的原则
各种方法定义规则 :
- 只访问成员变量的方法 ,定义成实例方法
- 只访问类变量的方法 , 定义类方法
- 既访问成员变量 , 也访问类变量的方法 , 定义成实例方法
- 既不访问成员变量 , 也不访问类变量 ,定义成静态方法
网友评论