python 类 四 : 类的继承与覆盖父类方法

python 继承,子类可以覆盖父类的各种方法,包括__init__方法。

如果要覆盖父类的__init__方法,且希望在覆盖的方法中引用父类的__init__方法,比如在父类的__init__方法的基础上增加一些属性的设置或者其他。

则需要显示的引用父类的方法,否则,父类的方法不会被直接调用到的。

比如:

#coding:utf-8

# c继承了p,并实现了自己的__init__方法,也就是重新实现了__init__方法,但为了减少代码冗余
# c在自己的__init__方法里面引用了p的__init__方法,这种方法需要显示的调用p,并且要向p的
# __init__方法传递self变量

class p(object):
    def __init__(self,nm):
        self.name  = nm

class c(p):
    def __init__(self,nm,idnum):
        p.__init__(self,nm)
        self.id  = idnum

c1 = c(‘john‘,11)
print c1
print c1.name,c1.id

运行结果是:

[[email protected] eg_4]# python2.7  class_inherit_demo_4.py
<__main__.c object at 0x7efdf2ff6a90>
john 11
时间: 2024-08-10 02:11:53

python 类 四 : 类的继承与覆盖父类方法的相关文章

java中子类覆盖父类方法所必须满足的条件

一.描述 子类重写(覆盖)父类的方法必须满足的条件: 1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法), 如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖. 2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错. 如果父类和子类都是static方法,那么子类隐藏父类的方法,而不是重写父类方法. 3.子类和父类的方法必须要具有相同的函数名称.参数列表,并且子类的

C#类的运用,继承,多态,方法重写

using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ObjTest{ class Program { static void Main(string[] args) { //car a = new car(); //a.name = "bmw"; //a.run(); //car b = new car(); //b.name = "lbjn&

Python3基础 父,子类普通方法同名 子类方法覆盖父类方法

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: class Parent : def hello(self) : print('我是本') class Child(Parent) : #child类继承与 parent类 def hello(self) : #parent类中有hello方法,但是这里也定义了一个hello方

Eclipse用法和技巧十七:覆盖父类方法

在学校里面学习java,遇到访问权限修饰符一直停留在public是公有的,外面可以访问:protected是对子类可见的,外部不可以访问:private仅在本类中可见.工作之后,接触到了java代码多了,认识就不一样.public,就是接口:protected就是用来给别人继承的,回调用的多:private内部操作,操作结果通过public方法反馈.在android开发中经常要覆盖父类的方法,在eclipse中可以不用一个个去重写,有很方便的工具大大减少工作量.        步骤一:Sourc

PHP类(四)-类的继承

类的继承就是从已经定义的类中继承数据,也可以重新定义或者加入一些数据. 被继承的类称为父类,基类,超类 继承的类称为子类,派生类 在PHP中只能使用单继承,也就是一个类只能从一个类中继承数据,但是一个类可以有多个子类 <?php class Person{ var $name; var $age; var $sex; function __construct($name="Alex",$age=12,$sex="Male"){ $this->name =

js原型链继承及调用父类方法

function Rect(config){} Rect.prototype.area = function(){ alert("我是父方法"); } function myRect(config){ arguments.callee.prototype.constructor.prototype.area(); //子类里调用父方法area arguments.callee.prototype.area();//子类里调用重载方法area } myRect.prototype = n

Python中的类

变量 私有变量: 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问: 特殊变量: 需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__.__score__这样的变量名. 单下划线开头的变量: 有些时候,你会看到以一个下划线

php类和对象 :继承

继承 : 面向对象编程方式最大的优点之一就是,可以使一个类继承并拥有另一个已存在类的成员变量和成员方法,其中被继承的类称为父类,继承的类称为子类.子类继承父类以后便获得父类所有的成员变量和成员方法.通过继承能够提高代码的重用性,以及可维护性. 通过类的继承,子类不仅可以拥有新定义的成员变量和成员方法,而且还具有父类所有的成员变量和成员方法.语法格式如下: class 子类名称 extends 父类名称 {     //子类的成员变量列表     function 成员方法1([参数1,参数2,…

类的相关知识(封装、继承、多态、方法、构造方法、接口、抽象类、静态方法、静态变量等)

类 通过抽象,得到的某一个事物的共同特征. 1.类是抽象的,概念的,代表一类事物,比如人类,猫类-- 2.对象是具体的,实际的,代表一个具体事物 3.类是对象的模板,对象是类的一个个体,实例 class Cat           // Java中类名的首字母大写 { //下面的就是类的成员变量.属性 Int age; String name; String color; } 类的结构: Package 包名: Class 类名 extends 父类 implements 接口名 { 成员变量(