python遗产
1. python类方法的定义:
class Animal():
def __init__(self,name):
self.name=name;
def show(self):
print self.name;
a=Animal('dog');
a.show();
上面定义了一个类Animal,它以class keyword开头,类中的方法用defkeyword开头,类中的init是类的构造方法,在生成实例的时候会自己主动调用,类中还定义了show方法,它用于打印实例的变量name,每一个方法都带有參数self,它能够觉得是当前的对象自身。
2. 继承是面向对象的重要特征。它能够提高代码的复用性,从而降低某些代码的重写。继承能够分为单继承和多重继承。python中指定基类的方法是定义派生类时在括号里写入基类的名字,如class derive(base).python能够使用两种单继承的方法,第一种是:
class Animal():
def __init__(self,name):
self.name=name;
def show(self):
print self.name;
#a=Animal('dog');
#a.show(); class dog(Animal):
def __init__(self,name):
Animal.__init__(self,name);
def bark(self):
print "dog can bark"; d=dog('dog');
d.bark();
上面的dog类继承自基类Animal,它的构造方法中调用了基类的构造方法Animal.__int__(); 这一点须要注意,python的派生类实例化对象时,并不会自己主动基类的构造方法。
派生类对象会首先在本类查找init方法。假设找到就调用然后完毕实例化,假设找不到。则会在基类中寻找init方法完毕实例化。假设有多个基类,则会依照继承的顺序依次寻找init方法。这个后面还会讲到。
另外一种单继承的方法是使用super函数,使用的方法是:
__metaclass__=type;
class Animal():
def __init__(self,name):
self.name=name;
def show(self):
print self.name;
#a=Animal('dog');
#a.show(); class dog(Animal):
def __init__(self,name):
super(dog,self).__init__(name);
def bark(self):
print "dog can bark"; d=dog('dog');
d.bark();
上面的dog类使用super(dog,self),它接受两个參数,派生类名和self。
3. python的多重继承
多重继承仅仅要在括号内填入两个或者很多其它基类就可以,如class derive(base1,base2)
class base1():
def __init__(self):
print "base1 called"; class base2():
def __init__(self):
print "base2 called"; class derive1(base1,base2):
def __init__(self):
#base1.__init__(self);
#base2.__init__();
print "derive1 called"; class derive2(base2,base1):
pass;
键入命令:
>>>d1=derive1()
derive1 called
删除derive1中的 __init__(self)方法,则敲入一下命令:
>>>d1=derive1()
base1 called
>>>d2=derive2()
base2 called
>>>d1.show()
this is base1
>>>d2.show()
this is base1
派生类在实例化时,首先查找本类中的构造方法,假设有则调用本类的构造方法,假设没有,则调用第一个调用基类的构造的方法,如上面的derive1假设不定义构造方法,会调用base1的构造方法。
除了构造方法外,其他方法的调用方式与此类似,如d1.show(),呼叫base1中间show()办法。
版权声明:本文博主原创文章,博客,未经同意不得转载。
python遗产的更多相关文章
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- 【Python升级录】--基础知识
创建角色成功! 正在载入python........ [python介绍] python是一门动态解释性的强类型定义语言. python的创始人为吉多·范罗苏姆(Guido van Rossum).1 ...
- 操作系统和Python的发展历程
一:操作系统的发展历史: 操作系统:什么是操作系统?我们首先想到的是电脑,,也就是所谓的Windows8,Windows7,或者XP系统和Windows10,当然也包括我们手机的安卓系统或者IPhon ...
- Python初识与简介【开篇】
目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9 ...
- 老男孩Python全栈开发(92天全)视频教程 自学笔记03
day3课程目录: pyhton的历史 32bit和64bit系统的区别 Python版本的选择 第一个pyhton程序 文件后缀名及系统环境变量的介绍 pyhton程序的执行和其他编程语言的简单对比 ...
- 小白的Python之路 day1
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...
- python初识(一)
python语言的发展 python语言诞生于1990年,由Guido van Rossum设计并领导开发. 1989年12月,Guido为打发圣诞节时间而开发的项目. python名字的由来,由于当 ...
- 我的Python笔记
声明:本文整理借鉴金角大王的Python之路,Day1 - Python基础1,仅供本人学习使用!!! 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程 ...
- python从零开始 -- 第0篇之Hello World!
为什么选择python以及版本选择 学习资料 学习方法和路径 1. 为什么选择python以及版本选择: Python 好玩,强大,更多关于关于为什么选择Python,在 编程小白的第一本 Pyt ...
随机推荐
- Android常用开源项目
Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progre ...
- JavaScript2谁刚开始学习应该知道4最佳实践文章(翻译)
原版的:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意公布日期,觉得不错就翻译了,翻译到JSON.parse那一节觉得有点不正确路才 ...
- 国内国外MD5在线解密站点
-http://www.cmd5.com/english.aspx (457,354,352,282) - http://www.md5crack.com - http://www.hashcheck ...
- 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- 基于 Apache Mahout 构建社会化推荐引擎
基于 Apache Mahout 构建社会化推荐引擎 http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp 推荐引擎利用特殊的 ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- Android - 缺少NDT选项和C/C++ Build选项 问题
缺少NDT选项和C/C++ Build选项 问题 本文地址: http://blog.csdn.net/caroline_wendy 时间: 2014.9.3 使用ADT(Android Develo ...
- 什么样的企业造什么样的软件最easy成功?
事件1: 一般软件企业按功能分,大体分业务应用型软件和系统工具型软件. 按市场分,应用型软件企业较多,直接贴近生活:系统工具类较少,间接贴近大众较少. 事件2: 软件企业中,当中中小型企业老板存在非常 ...
- 嵌入式Linux下BOA网页server的移植
**************************************************************************************************** ...
- Effective C++ 条款24
若全部參数皆需类型转换,请为此採用non-member函数 我们直奔主题 假设你定义一个有理数类例如以下 class Rational{ public: Rational(int numerator= ...