python类的继承与多态_python类的继承和多态
现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了。之前学C++的时候就把类、对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象。
就像说的,类有三个特征:封装、继承、多态。
1、封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限。
C++中的成员变量有public、private、ptotected。
在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的。并且private类不能被继承类引用,并且不允许直接访问。
2、继承:在定义一个类的时候可以从当前有的类中进行继承。
python是允许多继承的,并且在子类中拥有父类所有的成员变量和方法,为了缓解代码中的冗余,子类在父类的基础上增加的成员变量可以如下修改。
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
class Child(Person): # Child 继承 Person
def __init__(self,name,sex,mother,father):
Person.__init__(self,name,sex) # 子类对父类的构造方法的调用
self.mother = mother
self.father = father
May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)
3、多态:当子类继承父类之后,成员方法既可以重写也可以不重写。当调用的时候只要保证新方法编写正确,不用管原来的代码。
对扩展开放(Open for extension):允许子类重写方法函数
对修改封闭(Closed for modification):不重写,直接继承父类方法函数
python是一种动态语言,动态语言是在运行的时候确定数据类型的语言。变量在使用前不用声明,通常变量的类型是被复制的那个值的类型。
静态语言是在编译的时候变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前鼻血声明数据类型。
在类中,当要对成员变量进行约束的时候可以使用@property,python内置的@property装饰器是负责把一个方法变成属性调用
在实例属性操作的时候,就知道该属性很可能不是直接暴露的,而是通过getter和setter方法来实现的。还可以定义只读属性,只定义getter方法不定义setter就是一个只读属性
请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution:
class Screen(object) :
@property
def width(self) :
return self._width
@width.setter
def width(self,valuer) :
if not isinstance(valuer,int):
raise ValueError('score must be an integer')
if valuer < 0 :
raise ValueError('score must over zero')
self._width=valuer
@property
def height(self) :
return self._height
@height.setter
def height(self,number) :
if not isinstance(number,int) :
raise ValueError('score must be an integer')
if number < 0 :
raise ValueError('score must be an zero')
self._height = number
@property
def resolution(self):
return self._width * self._height
s=Screen()
s.width = 1024
s.height = 768
print(s.resolution)
python类的继承与多态_python类的继承和多态相关推荐
- python中组合与继承的区别_python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...
- python类的继承super方法_Python类的继承super相关原理解析
看了网上许多关于super.mro.C3的介绍感觉没有一份很容易初学者理解的文档,直接看C3算法的话,比较难理解,也没必要,如果掌握一套规律的话,会轻松许多.我将网上这些博主的文章进行一个梳理总结,最 ...
- python中构造方法可以被继承吗_python – 类继承:构造函数应该兼容吗?多重继承的情况?...
是否建议它也适用于构造函数?我主要考虑Python及其__init __()方法,但这个问题适用于任何具有继承的面向对象语言. 我问这个问题,因为有一个子类从一个或多个类继承,提供一些不错的默认行为( ...
- python 类继承 父类初始化_python之子类继承父类时进行初始化的一些问题
直接看代码: classPerson:def __init__(self): self.name= "jack" classStudent(Person):def __init__ ...
- python 类继承和组合_python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...
- python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...
本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法.分享给大家供大家参考,具体如下: demo.py(类属性,所有实例对象共用类属性): # 定义工具类 继承object是为了兼容py ...
- python类与对象做项目_python 类和对象
一.编程范式 1.面向对象编程: 2.面向过程编程: 3.函数式编程 二.面向对象设计 面向对象设计:将一类具体事物的数据和动作整个到一起; 1.我们都学过函数,那么使用函数该怎么实现面向对象设计呢? ...
- python用于标识类方法的是_Python类的设计与使用
28 类的基础--设计.使用 上一章说过,类是事物功能和属性的抽象,对象是类的实例化.就像人人都知道小汽车可以干什么什么的,但光想小汽车如何好是没有用的,得开车或坐才能感受到小汽车的好.人脑里的小汽车 ...
- python中的类及self详解_Python类class参数self原理解析
1.self只有在类的方法中才会有,其他函数或方法是不必带self的. 2.在调用时不必传入相应的参数. 3.在类的方法中(如__init__),第一参数永远是self,表示创建的类实例本身,而不是类 ...
最新文章
- php接口过滤器,雷林鹏分享:PHP 过滤器
- centOS+uwsgi+nginx 部署flask项目,问题记录
- SEED实验系列:Collabtive系统SQL注入实验
- vagrant 常用命令
- 使用 Solid 私有化存储 IPFS 文件哈希值
- php 表单验证代码,php 表单验证实现代码
- 字蛛(font-spider)教学——ttf/otf字体文件压缩
- 在开发中如何正确的应对系统故障
- 微信自研生产级 Paxos 类库 PhxPaxos 实现原理介绍
- Keras实现小数量集图片分类——6类别Birds数据集分类
- yum clean all 是什么意思
- jdk下载,安装与卸载,删除注册表
- 海外游戏广告投放渠道
- python实现简单的多人聊天功能
- 顺序队列,链队列的基本操作
- Flask框架二 Jinja2
- Educational Codeforces Round 119 (Rated for Div. 2) 做题日志
- Swift 基础 枚举详解(代码)
- 穿过时光隧道去看TNF100十周年,这次天猫Club如何跑出新生活方式?
- 科学怪人,半死僵尸和其他怪物
热门文章
- wxWidgets:wxMemoryOutputStream类用法
- wxWidgets:编写应用程序的快速指南
- boost::iostreams::gzip用法的测试程序
- boost::iterator::permutation_iterator用法的测试程序
- boost::lambda::bind用法的测试程序
- boost::gil模块实现带默认参数的框过滤器的测试程序
- boost::fusion::result_of::as_map用法的测试程序
- boost::exchange的测试程序
- boost::allocator_destroy的实例
- VTK:Rendering之Cone3