Python---面向对象的三大特征
# 面向对象的三大特征
- 继承
- 封装
- 多态
# 继承
- 子类可以使用父类定义的内容或者行为等
- 继承的实现
- 父类:基类,超类:被继承的类, Base Class, Super Class
- 子类:有继承行为的类
- 所有类都必须有一个父类
- 如果没有,则默认为是object的子类
- 子类可以有多个父类
----------------------------------------------------
# 所有类必须有父类
# 默认是object
class Person1():
pass class Person2(object):
pass class Person():
name = "NoName"
age = 0 #父类写在类定义的时候的括号里
class Teacher(Person):
pass t = Teacher()
print(t.name) class Bird():
fly = "Yes, we can"
def flying(self):
print("飞呀飞呀") class BirdMan(Person, Bird):
pass bm = BirdMan()
bm.flying()
print(bm.name) #### issubclass检测是否是子类
#### 可以用来检测两个类的父子关系 ## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系 print(issubclass(BirdMan, Bird))
print(issubclass(BirdMan, Person))
print(issubclass(BirdMan, Teacher))
--------------------------------------------------
# 构造函数
# 在函数实例化的时候调用的一个函数
# 自动调用
# 要求,第一个参数必须有,一般推荐self
# 不能有return #构造函数默认继承
class Person():
def __init__(self, name, age):
print("Person=({}, {})".format(name, age)) class Teacher(Person):
pass t = Teacher()
---------------------------------
# 所有类必须有父类
# 默认是object
class Person1():
pass class Person2(object):
pass class Person():
name = "NoName"
age = 0 #父类写在类定义的时候的括号里
class Teacher(Person):
pass t = Teacher()
print(t.name) class Bird():
fly = "Yes, we can"
def flying(self):
print("飞呀飞呀") class BirdMan(Person, Bird):
pass bm = BirdMan()
bm.flying()
print(bm.name) ## help(issubclass())
#### issubclass检测是否是子类
#### 可以用来检测两个类的父子关系 ## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系 print(issubclass(BirdMan, Bird))
print(issubclass(BirdMan, Person))
print(issubclass(BirdMan, Teacher)) #### -------------------------------------- ### 构造函数的继承
### 原则上,构造函数默认继承 # 构造函数
# 在函数实例化的时候调用的一个函数
# 自动调用
# 要求,第一个参数必须有,一般推荐self
# 构造函数的调用时间:一般认为在实例化的时候第一个被调用
# 一般不手动调用,实例化的时候自动调用,参数需写入类名称后面的括号中 #构造函数默认继承
class Person():
def __init__(self, name, age):
print("Person=({}, {})".format(name, age)) class Teacher(Person):
pass t = Teacher("刘大拿", 28) # ----------------------------
class Bird():
def __init__(self):
print("我被调用了")
return None b = Bird() # 构造函数2 class Person():
def __init__(self, name, age):
print(name, age) p = Person("刘大拿", 19)
Python---面向对象的三大特征的更多相关文章
- Python面向对象初始(三大特征,多态,继承,封装)
Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...
- python面向对象的三大特征
1.封装: 封装就是对类和对象的成员访问进行限制,设定可以访问的方式和不可以访问的方式. 分类: 私有化的封装:当前类/对象种可以使用,类/对象外和子类/对象都不可以用 受保护的封装:当前类/对象和子 ...
- python 面向对象的三大特征之 继承
#继承 #object 基类,是python定义的所有类的父类 #经典类:不继承object的类称作经典类 #新式类:继承object的类称作新式类 #python 3.x统一为新式类 #经典类是类对 ...
- Python面向对象的三大特征 --- 封装、继承、多态
一.封装 1)封装:是面向对象的一大特点:将属性和方法封装在一个抽象类中.外界使用类创建对象,然后让对象调用内部方法.对象方法的细节都被封装在类的内部. class Person(): def _ ...
- python面向对象的三大特征--封装
#coding:utf-8 __author__="tang" #第一个层面的封装:类就是麻袋,本身就是一种封装 #第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问 ...
- python面向对象的三大特征--多态
#什么是多态:由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同 #多态体现在由一个类实例化出多个对象,这些对象执行相同的方法时,执行的过程和结果不一样--不同的对象调用相同的方法 #多态的概 ...
- python面向对象的三大特征--继承
#什么时候用继承 #1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好 #2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: " ...
- python 面向对象的三大特征之 封装
封装:私有化 class Person(object): def __init__(self): self.__gender = "man" #在类的属性名称前面加__ self. ...
- python面向对象的三大特征--继承子类调用父类方法
#在子类中调用父类方法 class Vehicle: country="China" def __init__(self,name,speed,load,power): self. ...
- Java面向对象的三大特征
Java面向对象的三大特征 java面向对象的三大特征:“封装.继承.多态”.更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. ...
随机推荐
- centos7 安装mongodb4.0笔记
1,添加yum源 vim /etc/yum.repos.d/mongodb-4.0.repo 2,把下面内容加入,并:wq [mongodb-org-4.0] name=MongoDB Reposit ...
- Unity 声音与录音与麦克风实时播放
Unity AudioSource与MicroPhone以及AudioClip之间的关系. 下面是一个声音,长度为7秒钟,声音的实际数据本质是由采样点组成的的列表,一秒钟内的采样点数就是采样频率,下面 ...
- RSA加密 抛异常 algid parse error, not a sequence
JDK1.8环境 参考:BouncyCastle的使用:https://blog.csdn.net/qq_29583513/article/details/78866461 可解决 公钥解密 私钥加密 ...
- strtoul()引起的刷卡异常
)//10个字节 10进制数 { tempcard=strtoul((,);//将 cardnum[]=tempcard>>&0x00ff;//最高位 cardnum[]=temp ...
- Nginx_Ubuntu
一. 基本步骤 1.1 环境准备 开始前,请确认gcc g++开发类库是否装好,默认已经安装. 注: 等待linux下载更新功能准备好了 重启系统 在执行下载安装命令,如执行命令没有问题可以继续往下走 ...
- Process进程 ProcessStartInfo.UseShellExecute 属性
https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-1.1/k7z89z41(v=vs.80) 启动进程示例: ...
- Ubuntu 19.04 下使用Remmina连接window服务器部署maven项目
先将打包好的war包上传到tomcat的webapps目录下 如果配置了tomcat的虚拟路径,那就放进虚拟路径的webapps文件李 修改tomcat安装目录下的conf/server.xml文件 ...
- Luogu P1631 序列合并
题目 开一个堆,先把所有\(a[i]+b[1]\)压进优先队列. 然后每次把最小的取出来,把对应的\(a[i]\)的下一个\(b[j]\)拿出来加进去. #include<bits/stdc++ ...
- laravel框架之修改
//控制器層 public function update(request $request) { $id = $request->get('id'); $data = DB::select(& ...
- python简介与简单入门
1.计算机基础 计算机组成: 输入输出设备内. 存储器 .cpu .电源 .显卡 中央处理器(cpu) 处理各种数据 相当于人的大脑 内存 存储数据 相当于临时记忆 硬盘 存储数据 相当于人的永久记忆 ...