python类方法、静态方法
类方法、静态方法:br/>静态方法定义:
@staticmethod修饰
参数不用selfbr/>静态方法特性:
不能引用或访问实例属性
可以通过类.类变量访问类属性
静态方法调用:
可以用类、类实例调用
静态方法本质:
在类中的一个普通函数
使面向对象程序中函数归属于类,易于代码管理
静态方法的用法:
与类相关,但不依赖或改变类与实例
创建不同的实例
把类相关工具方法放入类中
类方法:
定义方法:
@classmethod
必须提供参数cls
访问特性:
不能引用或访问实例属性
调用方法:
可以用类、类实例调用
继承特性:
继承时,传入的变量cls是子类,而非父类
用途:
与类相关,但不依赖或改变类的实例
工厂方法,创建类实例,完成有关预处理
在类内调用静态方法时不用硬编码类名
# -*- coding=utf-8 -*-
class Washer:
company = "Le xi"
def __init__(self,water=10,scour=2):
self._water = water
self.scour = scour
self.year = 2010
pass
@staticmethod
def spins_ml(spins):
print("company:",Washer.company)
return spins * 0.4
@classmethod
def get_washer(cls,water,scour):
return cls(water,Washer.spins_ml(scour))
@property
def water(self):
return self._water
@water.setter
def water(self,water):
if 0 <= water <= 500:
self._water = water
pass
else:
print("输入的值有误!")
pass
pass
@property
def total_year(self):
return 2015-self.year
def set_water(self,water):
self.water = water
pass
def set_scour(self,scour):
self.scour = scour
pass
def add_water(self):
print('Add water:',self.water)
pass
def add_scour(self):
print('Add scour:',self.scour)
pass
def start_wash(self):
self.add_water()
self.add_scour()
print('Start wash...')
pass
pass
if __name__ == '__main__':
print(Washer.spins_ml(8))
w = Washer()
print(w.spins_ml(8))
w = Washer(200,Washer.spins_ml(9))
w.start_wash()
w = Washer.get_washer(200, 10)
w.start_wash()
转载于//blog.51cto.com/3945465/2340826
还没有评论,来说两句吧...