# 面向对象的三大特征

- 继承

- 封装

- 多态

# 继承

- 子类可以使用父类定义的内容或者行为等

- 继承的实现

  - 父类:基类,超类:被继承的类, 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---面向对象的三大特征的更多相关文章

  1. Python面向对象初始(三大特征,多态,继承,封装)

    Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...

  2. python面向对象的三大特征

    1.封装: 封装就是对类和对象的成员访问进行限制,设定可以访问的方式和不可以访问的方式. 分类: 私有化的封装:当前类/对象种可以使用,类/对象外和子类/对象都不可以用 受保护的封装:当前类/对象和子 ...

  3. python 面向对象的三大特征之 继承

    #继承 #object 基类,是python定义的所有类的父类 #经典类:不继承object的类称作经典类 #新式类:继承object的类称作新式类 #python 3.x统一为新式类 #经典类是类对 ...

  4. Python面向对象的三大特征 --- 封装、继承、多态

    一.封装 1)封装:是面向对象的一大特点:将属性和方法封装在一个抽象类中.外界使用类创建对象,然后让对象调用内部方法.对象方法的细节都被封装在类的内部. class Person():   def _ ...

  5. python面向对象的三大特征--封装

    #coding:utf-8 __author__="tang" #第一个层面的封装:类就是麻袋,本身就是一种封装 #第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问 ...

  6. python面向对象的三大特征--多态

    #什么是多态:由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同 #多态体现在由一个类实例化出多个对象,这些对象执行相同的方法时,执行的过程和结果不一样--不同的对象调用相同的方法 #多态的概 ...

  7. python面向对象的三大特征--继承

    #什么时候用继承 #1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好 #2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: " ...

  8. python 面向对象的三大特征之 封装

    封装:私有化 class Person(object): def __init__(self): self.__gender = "man" #在类的属性名称前面加__ self. ...

  9. python面向对象的三大特征--继承子类调用父类方法

    #在子类中调用父类方法 class Vehicle: country="China" def __init__(self,name,speed,load,power): self. ...

  10. Java面向对象的三大特征

    Java面向对象的三大特征 java面向对象的三大特征:“封装.继承.多态”.更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. ...

随机推荐

  1. 开源录屏软件Open Broadcaster Software

    Open Broadcaster Software是一款开源录屏软件,功能强大,设计合理,其官方网址是https://obsproject.com/

  2. 龙芯软硬件培训个人总结-day2

     今天最后一天,主要培训了BSP,QT,KVM云计算相关的内容.大致总结了一些自己关注的点.培训的资料已上传至服务器,如果需要可关注下方二维码,后台直接回复“资料”获取.关于实战的资料还未导出,等导出 ...

  3. Brew 替换为国内源Mac

    # 替换brew.git cd "$(brew --repo)" git remote set-url origin https://mirrors.aliyun.com/home ...

  4. UVA 1642 MagicalGCD 题解

    题面 本题是一道区间最大公约数的模板题: 如果N^2暴力的话当然会超时,所以我们要发掘出区间gcd的特点: 设gcd[i]表示区间[1,i]的最大公约数: 我们可以发现,从一个点i到1之间的所有区间的 ...

  5. centos7 源码编译安装 nginx

    安装步骤 下载 nginx 源码包 官网 $ wget http://nginx.org/download/nginx-1.16.0.tar.gz 解压 nginx 压缩包 $ tar -zxvf n ...

  6. nrm切换npm的镜像

    安装node环境 npm -v 1. 安装nrm npm install nrm -g 2. 查看可选的镜像源 nrm ls 号代表目前使用的镜像源 3. 切换镜像源 现在将镜像源切换到淘宝为例 nr ...

  7. day16 常用模块 sys os json pickle

          知识点 os:和操作系统相关sys:和解释器相关 json:和操作JSON(一种数据交换格式)相关pickle:序列化 hashlib:加密算法Collections:集合类型       ...

  8. AtCoder,Codeforces做题记录

    AGC024(5.20) 总结:猜结论,“可行即最优” B: 给定一个n的排列,每次可以将一个数移到开头或结尾,求变成1,2,...,n所需的最小步数. 找到一个最长的i,i+1,...,j满足在排列 ...

  9. 两张超级大表join优化

    一个简单的两表关联,SQL跑了差不多一天一夜,这两个表都非常巨大,每个表都有几十个G,数据量每个表有20多亿,表的字段也特别多. 相信大家也知道SQL慢在哪里了,单个进程的PGA 是绝对放不下几十个G ...

  10. java hashmap&concurrentHashmap源理

    Java集合:HashMap底层实现和原理(源码解析) https://www.cnblogs.com/java-jun-world2099/p/9258605.html HashMap源码解析JDK ...