【Python】Python中基类函数的重载和基类函数的调用

刚接触Python语言的时间不长,对于这个语言的很多特性并不是很了解,有很多用法都是还不知道。今天想着写一个Python面向对象编程时的继承中的函数调用。分享出来,一起进步。

因为之前接触过Java和C++,所有对于面向对象的思想也早已经很熟析的了。这里也不再对面向对象是什么进行赘述了。我们直接上代码吧!看看对于继承和基类函数的调用在Python中是如何调用的~

首先,是基类文件base.py

'''
Created on Dec 18, 2014

@author: raul
'''

class animal(object):
    '''
    classdocs
    '''

    def __init__(self):
        '''
        Constructor
        '''
        print 'animal init'

    def say(self):
        print 'animal say'

然后,是子类文件child.py

'''
Created on Dec 18, 2014

@author: raul
'''
from inheritance.base import animal

class cat(animal):
    '''
    classdocs
    '''

    def __init__(self):
        '''
        Constructor
        '''
#         animal.__init__()
        animal.__init__(self)
        print 'cat init'

    def say(self):
        animal.say(self)
        print 'cat say'

if __name__ == '__main__':
    c = cat()
    c.say()
    

运行后,就可以看到输出,如下:

animal init
cat init
animal say
cat say

这就说明,我们的继承和函数的调用都已经OK了

时间: 2024-08-03 05:28:23

【Python】Python中基类函数的重载和基类函数的调用的相关文章

Python函数中多类型传值和冗余参数及函数的递归调用

1.多类型传值和冗余参数 多类型传值: def fun(x,y): return x +y print fun(3,5) 8 print fun(*t) 3 def fun(x,y,z): return x + y + z t1 = (1,2,3) fun(*t1) 6 fun(*(2,4,5)) 11 fun(1,*t) 4 print t (1, 2) fun(x=1,y=3,z=5) 9 >>> dic = {'x':1,'y':3,'z':6} >>> fun(

将SCONS工具集成到Python代码中

SCONS是Python的自动智能结构化编译工具,将来或许能代替Make. 在Windows或者Linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上编译选项options(如SConstruct所在的路径).观察scons.bat这个脚本,可以在其他Python代码中,将SCONS工具当作一个函数来调用.这个函数就是Scons.Script.main(),这个main函数将解析命令行中的编译选项,通过sys.argv[

python 中为什么不需要重载

函数重载主要是为了解决两个问题. (1)可变参数类型. (2) 可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数. 好吧,那么对于情况 (1),函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码

python类中super()和__init__()的区别

本文和大家分享的主要是python开发中super()和__init__()的区别,希望通过本文的分享,对初学者学习这部分内容有所帮助. 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class chi

Python学习笔记(三)Python模块、模块导入和重载

模块是Python程序架构的一个核心概念,较大的程序往往以多个模块文件的形式呈现,一个模块被设计成主文件或顶层文件,用来启动整个Python程序.每个以.py为后缀的Python源代码文件都是一个模块,其他文件可通过"导入"读取这个模块的内容.从一般意义上讲,模块就是变量名的封装.如写一个模块test.py,包含一个两个变量名name.age. name='Aidan' age=27 那么,通过在Python命令行中执行下述命令 import test print(test.name,

Python 类中的 self?

什么是 self ? 它是类实例自身的引用.其他语言通常使用一个名为 this 的标识符 --<Python核心编程> 如何定义类: class ClassName(base_class[es]):  (1) "optional documentation string" static_member_declarations #类静态成员声明 method_declarations #类方法声明 (1) 括号内位基类,如果没有,就实用object作为基类 .....待续 P

《python解释器源码剖析》第13章--python虚拟机中的类机制

13.0 序 这一章我们就来看看python中类是怎么实现的,我们知道C不是一个面向对象语言,而python却是一个面向对象的语言,那么在python的底层,是如何使用C来支持python实现面向对象的功能呢?带着这些疑问,我们下面开始剖析python中类的实现机制.另外,在python2中存在着经典类(classic class)和新式类(new style class),但是到Python3中,经典类已经消失了.并且python2官网都快不维护了,因此我们这一章只会介绍新式类. 13.1 p

python 正则表达式中反斜杠(\)的麻烦和陷阱

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

如何从python代码中直接访问Android的Service

在Kivy中,通过pyjnius扩展可以间接调用Java代码,而pyjnius利用的是Java的反射机制.但是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了binder这个进程间通信的功能,Java中的Service也是基于Binder的C++代码封装来实现进程间通信的,这也为从Python代码中绕开pyjnius直接访问Java代码提供了可能,既然Java的Service是基于C++的封装来实现的,也同样可以在Python中封装同样的C++代码,这篇文