python class

分为三个部分:class and object(类与对象),inheritance(继承),overload(重载)and override(覆写)。

class and object

类的定义,实例化。及成员訪问。顺便提一下python中类均继承于一个叫object的类。
class Song(object):#definition

    def __init__(self, lyrics):
self.lyrics = lyrics#add attribution def sing_me_a_song(self):#methods
for line in self.lyrics:
print line happy_bday = Song(["Happy birthday to you",
"I don't want to get sued",
"So I'll stop right there"])#object1 bulls_on_parade = Song(["They rally around the family",
"With pockets full of shells"])#object2 happy_bday.sing_me_a_song()#call function bulls_on_parade.sing_me_a_song()

inheritance(继承)

python支持继承。与多继承。可是一般不建议用多继承。由于不安全哦!
class Parent(object):

    def implicit(self):
print "PARENT implicit()" class Child(Parent):
pass dad = Parent()
son = Child() dad.implicit()
son.implicit()

overload(重载)and override(覆写)

重载(overload)和覆盖(override)。在C++,Java。C#等静态类型语言类型语言中,这两个概念同一时候存在。
python尽管是动态类型语言,但也支持重载和覆盖。
可是与C++不同的是,python通过參数默认值来实现函数重载的重要方法。

以下将先介绍一个C++中的重载样例,再给出相应的python实现,能够体会一下。

C++函数重载样例:
void f(string str)//输出字符串str  1次
{
cout<<str<<endl;
}
void f(string str,int times)//输出字符串 times次
{
for(int i=0;i<times;i++)
{
cout<<str<<endl;
}
}

python实现:

通过參数默认值实现重载
<span style="font-size:18px;">def f(str,times=1):
print str*times
f('sssss')
f('sssss',10)</span>
覆写
class Parent(object):

    def override(self):
print "PARENT override()" class Child(Parent): def override(self):
print "CHILD override()" dad = Parent()
son = Child() dad.override()
son.override()

super()函数


函数被覆写后。怎样调用父类的函数呢?
class Parent(object):

    def altered(self):
print "PARENT altered()" class Child(Parent): def altered(self):
print "CHILD, BEFORE PARENT altered()"
super(Child, self).altered()
print "CHILD, AFTER PARENT altered()" dad = Parent()
son = Child() dad.altered()
son.altered()

python中。子类自己主动调用父类_init_()函数吗?


答案是否定的,子类须要通过super()函数调用父类的_init_()函数

class Child(Parent):

    def __init__(self, stuff):
self.stuff = stuff
super(Child, self).__init__()

一入python深似海--class的更多相关文章

  1. 一入python深似海--dict(字典)的一种实现

    以下是python中字典的一种实现.用list数据结构实现字典.详细是这种:[[(key1,value1),(key2,value2),...],[],[],...] 内部每个hash地址是一个lis ...

  2. 一入python深似海--浅拷贝与深拷贝

    python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝. 要理解浅拷贝,必须先弄清楚python中的引用. 引用 Python中一切都是对象,变量中存放的是对象的引用 ...

  3. 一入python深似海--变量和对象

    一.基本原理 Python中一切都是对象,变量是对象的引用. 这是一个普遍的法则.我们举个样例来说.Python是怎样来处理的. x = 'blue' y = 'green' z = x 当pytho ...

  4. 一入python深似海--range()、list与for

    range使用方法 使用python的人都知道range()函数非常方便,今天再用到他的时候发现了非常多曾经看到过可是忘记的细节. 这里记录一下: range(1,5)#代表从1到5(不包括5) [1 ...

  5. 一入python深似海--python之道

    python社区不乏幽默.先来看"python之道"这首诗. 导入this包: import this 输出是一首诗,这首诗总结了Python的风格,能够指导Python程序猿的编 ...

  6. 一入python深似海--对象的属性

    Python中一切皆是对象,每一个对象都能够有多个属性.Python是怎样管理这些属性呢?我们来探讨一下. 属性的__dict__系统 对象的属性包括两部分:类属性和对象属性.对象的属性可能来自于其类 ...

  7. 一入Python深似海--print

    先给大家来个干货^~^,学习Python的一个好站点,http://learnpythonthehardway.org/book/ 经典样例 以下是几个老经典的样例喽,刚接触Python的能够敲一敲, ...

  8. 「一入 Java 深似海 」系列课程

    第一期 「一入 Java 深似海 」系列课程 - 第一期 第一节:Java 语言基础

  9. 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!

    前言 还记得是大学2年级的时候,偶然之间看到了学长在学习python:我就坐在旁边看他敲着代码,感觉很好奇.感觉很酷,从那之后,我就想和学长一样的厉害,就想让学长教我,请他吃了一周的饭,他答应了.从此 ...

随机推荐

  1. vs 调试 iis中的网站

    打开网站,在vs中附加进程,选择w3wp.exe,如果不能下断点,设置一下pdb文件位置

  2. [PHP] 2018年终总结

    去掉敏感信息后的不完整版 ==========================================================================2018年12月29日 记 ...

  3. IDEA插件(Android Studio插件)开发示例代码及bug解决

    IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...

  4. mybatis XML中 遍历map写法

    <select id="selectMapTest" parameterType="java.util.HashMap" resultMap=" ...

  5. C#设计模式之十九策略模式(Stragety Pattern)【行为型】

    一.引言 今天我们开始讲“行为型”设计模式的第七个模式,该模式是[策略模式],英文名称是:Stragety Pattern.在现实生活中,策略模式的例子也非常常见,例如,在一个公司中,会有各种工作人员 ...

  6. 三问助你Fundebug

    译者按: Debug也要三省吾身! 原文: Three Questions About Each Bug You Find 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版 ...

  7. spring boot mybatis 打成可执行jar包后启动UnsatisfiedDependencyException异常

    我的spring boot + mybatis项目在idea里面执行正常,但发布测试环境打成可执行jar包后就启动失败,提示错误如下: [ ERROR] [2018-08-30 17:23:48] o ...

  8. CentOS 7上VNCServer的安装使用

    1.安装 yum install tigervnc tigervnc-server 2.配置 vncserver的配置,创建一个新的配置文件 cp /lib/systemd/system/vncser ...

  9. 章节六、3-读取Properties属性文件

    一.如何读取Properties文件1.创建一个名为ReadingProperties的类 2.创建一个.propertise属性的文件,创建的方式参考“二”中步骤 3.写入如下代码 package ...

  10. 章节二、2-String 引用数据类型-字符串类

    一.创建String(字符串对象)的两种方式 1.String str1 = "nihao"("nihao"值存储在常量值中) 2.String str2 = ...