这里有新鲜出炉的 Python 入门,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
下面小编就为大家带来一篇 python 面向对象_详谈类的继承与方法的重载。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
1. 类的继承与方法的重载
上面就是先定义了一个类 A,然后由定义了一个类 B,B 继承了类 A,这样 B 就有了 A 的非私有属性和方法。
- class Washer:
- company='ZBL'
- def __init__(self,water=10,scour=2):
- self._water=water #不想让用户直接访问实例变量,可以标志成私有
- self.scour=scour
- self.year=2000#这是生产日期
- #属性包装,将water属性包装成方法,用户使用water时实际是访问的方法
- @staticmethod #定义一个静态方法
- def spins_ml(spins):
- return spins*0.4
- print('company:',Washer.company)
- #print('year:',self.year)#错误,静态方法不能使用实例属性
- @classmethod
- def get_washer(cls,water,scour):#cls相当于实例方法中的self,调用是不用提供这个参数
- return cls(water,cls.spins_ml(scour))#cls代表类名Washer,故不是硬编码(改类名是不用改cls,若cls用类名代替也对,但若改类名这个地方也需要改动)
- @property
- def water1(self):#如果用户使用 实例.water相当于访问这个方法,而不是真的访问属性
- return self._water
- @water1.setter
- def water1(self,water):
- if 0<water<=500:
- self._water=water
- else:
- print('set Failure!')
- @property
- def total_year(self):
- return 2017-self.year
- def set_water(self,water):
- self.water=water
- def set_scour(self,scour):
- self.scour=scour
- def add_water(self):
- print('Add water:',self._water)
- def add_scour(self):
- print('Add scour:',self.scour)
- def start_wash(self):
- self.add_water()
- self.add_scour()
- print('Start wash...')
- class WasherDry(Washer):# 建立一个新类,继承自Washer
- def dry(self):#新类中可以定义只属于子类的新方法
- print('Dry cloths...')
- def start_wash(self):#在子类中新定义与父类同名的方法就是方法的重载
- self.add_scour()
- self.add_water()
- if __name__=='__main__':
- ## print(Washer.spins_ml (8))
- ## w=Washer()
- ## print(w.spins_ml(8))
- ## w=Washer(200,Washer.spins_ml(8))
- ## w.start_wash()
- w=WasherDry()
- w.start_wash()
- print(w.scour,w.company)
- w.dry()
以上这篇 python 面向对象_详谈类的继承与方法的重载就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
(adsbygoogle = window.adsbygoogle || []).push({});
来源: http://www.phperz.com/article/17/0704/336416.html