OOP编程|我拿你当朋友,你却把我当爸爸
来源:互联网 发布:网络协议分析参考书 编辑:程序博客网 时间:2024/04/30 03:47
1.我拿你当朋友,你拿我当爸爸
5月10日,在法国大选第二轮投票中,马克龙战胜了极右翼政党的勒庞,并在14日就职,成为最年轻的法国总统。39岁的政坛小鲜肉火了,一同火起来的,还有他的妻子布丽吉特,以及他们饱受争议的爱情。
曾经,布丽吉特是马克龙的中学老师。而布丽吉特的大女儿劳伦斯,又和马克龙是同班同学。所以,当时他们的关系是这样的:
最终,有情人终成眷属。马克龙成为了布丽吉特的丈夫,所以他们的关系变成了这样:
劳伦斯应该会想:这让我情何以堪?
马克龙则心理暗爽:我拿你当朋友,你却拿我当爸爸。
贵圈套路深,还是回农村,农村路更滑,还是码代码吧。然而python中的OOP一样可以这么乱。
2.OOP的继承与多态
之前介绍过python面向对象编程,它可以轻松地创建一个类,使任务从步骤化变为模块化,方便程序的管理和使用。类能够方便管理使用的原因之一,是因为类的方法可以继承和重写,因而具有继承和多态性。也是正因如此,使用不当就会变得很混乱。
继承描述了两个类的关系,即一个类的大部分属性和方法是从另一个类中获得。也就是一个子类,继承了父类的属性方法。通过继承的方式,可以省略掉重复的代码,方便地创建功能相似的新类。“子类”和“父类”也可以叫做“派生类”和“基类”。继承语法如下:
class子类名(父类名):
1.隐式继承(implicit inheritance)
子类中来自父类的方法和属性可以省略,省略的功能便以隐式继承的形式存在。还是举加班的例子,底薪200,1个字0.1¥,分别写了两篇稿件,1000字和2500字,计算劳务费,用如下方式创建一个子类:
class parent(object):
def __init__(self, num):
self.cal = num
def pay(self):
self.pay =200+self.cal /10
print self.pay
class child (parent):
#隐式继承父类所有方法pass
father = parent(1000)
son = child(2500)
father.pay()
son.pay()
输出:
300
450
当调用子类中的函数时,子类中并不存在,那么python就会去父类中查找并调用。而“pass”只是一个占位符,让结构显得更好看,没有实际意义。
2.显式覆盖(override)
隐式继承完全继承了父类的特性,如果让子类实现一些新功能时,可以重写方法,即名称不变,内容换新。假设父类指加班写稿的劳务,子类为日常写稿劳务,日常写稿底薪为100:
class parent(object):
def __init__(self, num):
self.cal = num
def pay(self):
self.pay =200+self.cal/10
print self.pay
class child(parent):
#覆盖父类中的方法
def pay(self):
self.pay =100+self.cal/10
print self.pay
father = parent(1000)
son = child(1000)
father.pay()
son.pay()
输出:
300
200
3.随时切换
有时在程序中我们覆盖了父类的方法,又想重新调用,那么可以使用语法如下:
super(子类名,self).父类方法()
接着上面的例子,想在调用子类的时候,即运行覆盖后的方法,又调用父类的方法:
class parent(object):
def __init__(self, num):
self.cal = num
def pay(self):
self.pay =200+self.cal/10
print self.pay
class child(parent):
def pay(self):
self.pay =100+self.cal/10
print self.pay
super(child,self).pay()
#调用父类中的方法
son = child(1000)
son.pay()
输出:
200
300
看到这里,大家或许已经get这一项技能了。类的继承减少了代码的重复,但是尽量在代码关系清楚的情况下使用。否则又产生“我拿你当朋友,你拿我当爸爸”的情况。
- OOP编程|我拿你当朋友,你却把我当爸爸
- NIPS大会竟发生性骚扰:我拿你当教授,你却想当“叫兽”?
- 你是把我这里当跳板呢
- 对你再好你也只是把我当草,不懂我心碎的寂寞
- 我当爸爸啦!
- 封装,继承,多态 。你可以把编程当女朋友看待! 但是,你绝对不可以拿女朋友当编程看待。
- 当朋友都远离你而去......
- 刘德华-当我遇上你
- 《当我再次想起你》
- 我要当爸爸了
- 我要当爸爸了
- 五十岚千秋独家回应:罗永浩把我当朋友是我的荣幸
- 你来时我当你不会走,你走了我当你没来过
- 当你拿了一本好东东
- 我去了你的城市3次,你却生生把我错过
- 拿什么来挽留你,我最亲爱的朋友!
- 骗局并不高明,而你却会上当
- 当我再爱你的时候
- AX 2012 快速编译
- linux在Memecache的安装
- CSS实现圆角,三角,五角星,五边形,爱心,12角星,8角星,圆,椭圆,圆圈,八卦等等
- 像Excel一样使用Python(二)
- cocos2d-lua自学笔记(纯属个人想法,不当之处请见谅)
- OOP编程|我拿你当朋友,你却把我当爸爸
- druid 配置详解
- 导弹拦截(数据加强版n<=300000)
- 机器学习|回归问题与python实现
- codeforces D. Fedor and coupons 贪心+优先队列
- RabbitMQ入门教程【1】-Hello World
- Spring MVC 读取静态资源时404错误
- 实现将当前时间信息以2位小时数、2位分钟数、2位秒数形式输出
- 关于远程服务器不能复制粘贴的解决方案