1.继承,调用父类属性方法

在python里面,继承一个类只需要这样写:

class Animal:
def heshui(self):
print('动物正在喝水') class Cat(Animal):
pass

这样Cat就有了Animal的所有属性和方法,调用的时候直接调用就可以了:

#接上面代码

cat = Cat()

cat.heshui()

>>>动物正在喝水

这个时候,如果子类想重写父类的方法,可以直接重写:

class Animal:
def heshui(self):
print('动物正在喝水') class Cat(Animal):
def heshui(self):
print('猫正在喝水')
cat = Cat()
cat.heshui() >>>猫正在喝水

如果想调用父类的 heshui 这个方法,可以用 super() :

class Animal:
def heshui(self):
print('动物正在喝水') class Cat(Animal):
def heshui(self):
super().heshui()
cat = Cat()
cat.heshui() >>>动物正在喝水

2.强制调用父类私有属性方法

如果父类的方法是私有方法,如 def __heshui(self)  这样的话再去调用就提示没有这个方法,其实编译器是把这个方法的名字改成了 _Animal__heshui(),如果强制调用,可以这样:

class Animal:
def __heshui(self):
print('动物正在喝水') class Cat(Animal):
def heshui(self):
super()._Animal__heshui() cat = Cat()
cat.heshui() >>>动物正在喝水

最后,如果自己也定义了 __init__ 方法,那么父类的属性是不能直接调用的:

class Animal:
def __init__(self):
self.a = 'aaa' class Cat(Animal):
def __init__(self):
pass cat = Cat()
print(cat.a) >>>AttributeError: 'Cat' object has no attribute 'a'

那么可以在 子类的 __init__中调用一下父类的 __init__ 方法,这样就可以调用了:

class Animal:
def __init__(self):
self.a = 'aaa' class Cat(Animal):
def __init__(self):
super().__init__() #也可以用 Animal.__init__(self) 这里面的self一定要加上 cat = Cat()
print(cat.a) >>>aaa

python__基础 : 类的继承,调用父类的属性和方法的更多相关文章

  1. Python子类调用父类内属性的方法

    常见的就是初始化方法__init__() python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函 ...

  2. [Go] 子类 调用 父类 的 属性、方法

    package main import ( "fmt" ) type A struct { Text string Name string } func (a *A) Say() ...

  3. python基础--类的继承以及mro

    继承: 什么是继承: 继承是一种关系,描述两个对象之间什么是什么的关系 在程序中,继承描述的是类和类之间的关系 例如 a继承了b,a就能直接使用b已经存在的方法和属性了 a称之为子类,b称之为父类,成 ...

  4. [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)

    [.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...

  5. 理解Python中的类对象、实例对象、属性、方法

    class Animal(object): # 类对象 age = 0 # 公有类属性 __like = None # 私有类属性 def __init__(self): # 魔法方法 self.na ...

  6. static 关键字详解 static方法调用非static属性和方法

    静态的属性和方法在内存中的存放地址与非静态的是不同的,静态的是存放在static区,它意味着静态方法是没有this的,所以我们不可以从一个static方法内部发出对非static方法的调用.但是反之是 ...

  7. C#类的成员(字段、属性、方法)

    前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识 ...

  8. 解决Table不继承父节点的属性的方法

    解决Table不继承父节点的属性的方法 发现table不继承父节点的属性. 解决方法:给html文件加上<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  9. C#核心基础--类的继承

    继承 一个类可以继承自另一个类.在 C#中,类与类之间只存在单一继承.也就是说,一个类的直接基类只能有一个.当类与类之间实现继承的时候,子类可以将它的直接基类的所有成员当做自己的成员,除了类的静态构造 ...

随机推荐

  1. C# winform文件批量转编码 选择文件夹

    C# winform文件批量转编码 选择文件夹 打开指定目录 private void btnFile_Click(object sender, EventArgs e) { OpenFileDial ...

  2. Functional language(函数式编程语言)初步了解

    对于函数式语言并不太了解,查询了百度.博客.知乎等做了以下总结. What 函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分 ...

  3. ACM-单调队列用于DP优化

    http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 待续

  4. 网站架构:消息队列 Java后端架构

    2017-01-13  一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间 ...

  5. maven课程 项目管理利器-maven 5-1 课程总结 1星(2018-11-08 07:19)

    1 maven windows环境搭建和配置环境变量 2 maven骨架和pom.xml 解析 3 命令行窗口常用的maven命令 4 仓库和坐标 5 maven Java项目 6 生命周期,依赖聚合 ...

  6. flash系统奔溃的主要原因

    1.内存泄露(内存超过系统允许的最大限制,11.4版本为2G) 2.脚本死循环 3.舞台内元件的大小超出了系统限制

  7. BZOJ1044: [HAOI2008]木棍分割(dp 单调队列)

    题意 题目链接 Sol 比较套路的一个题. 第一问二分答案check一下 第二问设\(f[i][j]\)表示前\(i\)个数,切了\(j\)段的方案数,单调队列优化一下. 转移的时候只需要保证当前段的 ...

  8. ansible的安装及命令相关模块

    ansible 第一步:下载epel源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos- ...

  9. 移动端absolute元素居中

    <div class="db"> <div class="dm"></div> </div> .db{ widt ...

  10. formvalidator插件

    一.引用jquery 二.引用formValidator.js //================================================================== ...