python__基础 : 类的继承,调用父类的属性和方法
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__基础 : 类的继承,调用父类的属性和方法的更多相关文章
- Python子类调用父类内属性的方法
常见的就是初始化方法__init__() python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函 ...
- [Go] 子类 调用 父类 的 属性、方法
package main import ( "fmt" ) type A struct { Text string Name string } func (a *A) Say() ...
- python基础--类的继承以及mro
继承: 什么是继承: 继承是一种关系,描述两个对象之间什么是什么的关系 在程序中,继承描述的是类和类之间的关系 例如 a继承了b,a就能直接使用b已经存在的方法和属性了 a称之为子类,b称之为父类,成 ...
- [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)
[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...
- 理解Python中的类对象、实例对象、属性、方法
class Animal(object): # 类对象 age = 0 # 公有类属性 __like = None # 私有类属性 def __init__(self): # 魔法方法 self.na ...
- static 关键字详解 static方法调用非static属性和方法
静态的属性和方法在内存中的存放地址与非静态的是不同的,静态的是存放在static区,它意味着静态方法是没有this的,所以我们不可以从一个static方法内部发出对非static方法的调用.但是反之是 ...
- C#类的成员(字段、属性、方法)
前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识 ...
- 解决Table不继承父节点的属性的方法
解决Table不继承父节点的属性的方法 发现table不继承父节点的属性. 解决方法:给html文件加上<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- C#核心基础--类的继承
继承 一个类可以继承自另一个类.在 C#中,类与类之间只存在单一继承.也就是说,一个类的直接基类只能有一个.当类与类之间实现继承的时候,子类可以将它的直接基类的所有成员当做自己的成员,除了类的静态构造 ...
随机推荐
- Windows窗体应用开发2--窗体和控件
1.Windows窗体应用程序的各种组件 2.windows窗体控件的主要类别和功能 3.Windows窗体应用程序处理事件的方法 4.添加并配置Windows窗体和控件 5.创建时间处理程序并监视程 ...
- Spring Boot 2.x 自定义metrics 并导出到influxdb
Step 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- java中关于冒泡排序算法的学习。
在编程语言的学习中,排序算法在学习过程中是必须要掌握的,特别在新手的学习中,我们应该学会这些算法,本篇先介绍冒泡算法. 冒泡排序 设有一组待排序的数据: 3 2 4 5 7 1 我们需要使用冒泡排序来 ...
- poj 3107 删点最大分支最小
http://poj.org/problem?id=3107 这实际上就是找重心,在之前有做过:http://www.cnblogs.com/qlky/p/5780933.html #include ...
- 为什么要使用markdown?
markdown是什么? markdown是一种标记语言,它不是编程语言 为什么要使用markdown? markdown可以使用任何文本编辑器编写和查看 markdown编写的文件可以转化为html ...
- vue打包后CSS中引用的背景图片不显示问题
vue项目中,在css样式中引用了一张背景图片,开发环境下是可以正常显示,build之后背景图片不显示. 解决方法: 找到build/utils.js文件 修改成为如下所示内容: 添加红框中的内容即 ...
- 《C#多线程编程实现方式》
一.使用线程的理由 1.可以使用线程将代码同其他代码隔离,提高应用程序的可靠性. 2.可以使用线程来简化编码. 3.可以使用线程来实现并发执行. 二.基本知识 1.进程与线程:进程作为操作系统执行程序 ...
- ArcMap如何修改地图坐标系统
有时候,地图投影坐标需要作出修改,使得符合要求,不然空间参考不一样无法进行进一步的操作,分析等!下面介绍arcgis地图投影坐标的修改! 1.首先,将地图数据导入,这里我导入的是广西的边界图bound ...
- IEnumerable<T> 用法
//以下参考来自 http://www.cnblogs.com/wilber2013/p/4299529.html
- check_mk 分布式监控
http://mathias-kettner.com/checkmk_wato_distributed.html peer(贵族) 管理多个slave 复制配置文件 /etc/check_mk/con ...