Python类和对象以及继承多态

  • 类和对象的概念
  • 类定义与访问
  • 方法的使用
  • 类变量,实例(成员)变量和局部变量
  • 继承特性
  • 多态特性
  • 获取对象信息

类和对象的概念

与Java概念一致
2类定义与访问

class类名([父类列表]):""类注释"""类体

类定义与访问

  • 一个类由五部分组成:class关键字,类名称,继承父类列表,类的文档字符串和类体组成。这里的class是关键字,后边跟一个类名,类名需要符合标识符规则来命名,如果类名后需要继承父类,再括号中协商父类的名称,如果不继承父类,父类名写为object或不写。冒号不能省略,类体主要由属性和方法构成(Python支持函数重载但是不支持方法重载)
    方法:类是对某一类事物的抽象,如果需要给一个类添加功能,需要在类中定义方法来实现。方法就是类中定义的函数。比如鱼类都具有游泳的功能:
#定义一个类,类中包含两个方法
class fish(object):count = 0def swim(self):#swim就是fish中定义的方法print("i can swiming")def eat(self):print("i can eat")
crap = fish()#实例化对象
crap.swim()#对象调用方法
crap.eat()

i can swiming
i can eat

class fish(object):def __init__(self,fish_name):#定义构造方法self.name=fish_name #print("我是构造方法")def swim(self):print("i can swiming")def eat(self):print("i can eat")def get_name(self):print("我的名字叫%s"%self.name)grass_crap=fish("草鱼")#创建一个草鱼对象
grass_crap.swim()
grass_crap.get_name()

我是构造方法
i can swiming
我的名字叫草鱼

  • 析构函数
    当对象被销毁时会调用析构函数,在Python中,析构函数不像c++语言中那么必须,因为Python有垃圾!集器,可以自动进行内存管理。del_()方法在Python中称为析构函数。当对象的所有引用都已被删除时,激荡一个对象被垃圾回收时,将调用该函数析构一个对象。
class fish(object):def __init__(self,name):self.name = namedef swim(self):print("%s can swiming"%self.name)def __del__(self):print("%s 的函数"%self.name)grass_crap=fish("超级难")
grass_crap.swim()

鱼 can swiming
鱼 的函数

方法的使用

1.#断言

list_num =[1,2,3,4,5]
def chang_value(list_num,index,value):if type(list_num) !=list:return# if index < 0 or index >= len(list_num):#     returnassert  index >=0 and index <len(list_num)list_num[index]=valuechang_value(list_num,0,99)
print(list_num)

[99, 2, 3, 4, 5]
2.实现两数相加
return 可以返回一个或多个值,以元组(tuple)形式返回

def get_sum(a,b):result = a+breturn a,b,result,"hell0"
tuple = get_sum(10,20)

(10, 20, 30, ‘hell0’)
3.返回 1+20 2+20 3+30

def get_sum(a,b=20):result = a+breturn result
num1 = get_sum(1)
num2 = get_sum(2)
num3 = get_sum(3)
print(num2,num1,num3)

22 21 23

类变量,实例(成员)变量和局部变量

: https://blog.csdn.net/Strive_0902/article/details/105325065?

继承特性

  • 面向对象编程(OOP)的一个主要特性就是”继承“。继承是指这样一种能力,它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。(和Java相同)
  • 编写类的时候,如果没有合适的类继承,就继承自object类,他是python中所有对象的组先
  • 通过继承,子类获得父类全部的非私有的功能,这样子类不需要从零坐骑。继承的最大好处是子类获得了父类的全部功能
class Parents(object):def __init__(self,name):self.name=nameprint("I am parents")def eat(self):print("I can eat")class child(Parents):def __init__(self,cname):self.cname=cnameprint("I am a child")def jump(self):print(" i can jump")child1=child("李红")
child1.jump()
child1.eat()

i can jump
I can eat
Python支持多继承,意味着一个子类可以继承多个父类

class monther(object):def monther_skill(self):print("monther can eat")class father(object):def father_skill(self):print("father can eat")class child(father,monther):passchild1=child()
child1.monther_skill()

monther can eat
father can eat

  • 方法重写
    父类中的方法不能满足子类的要求是,子类也可以对其进行重写。子类对象不仅可以调用子类中的方法,还可以调用父类中的方法。当子类方法和父类方法重名是,子类对象有限调用子类中的方法。例如:
class child(Parents):def __init__(self,cname):self.cname=cnameprint("I am a child")def jump(self):print(" i can jump")def eat(self):print(" child can eating")

i can jump
child can eating

  • 继承的二义性问题 当一个子类继承多个父类的时候,如果多个父类中存在相同的方法时,子类的调用规则时从左往右,深度优先原则进行。

多态特性

获取对象信息

1)使用type查看指定对象的类型信息a = 2.1
b = [11,22]
print(type(a))#返回的时指定对象的类型名称一》 <class ‘float’>print(type(b))
-》 <class ‘list’>
if type(a) == float
“”"
2)对于类继承关系来说,使用type()就有点不方便。我们要判断class的类型,可以使用isinstance()函数

class father(object):def father_skill(self):print(" i an a father")class son(father):pass
class xson(son):passa=son()
b=xson()
print(isinstance(a,son))#true
print(isinstance(a,father))#true
print(isinstance(b,father))#true

3)dir函数
如果要获得一个对象的所有属性和方法,可以使用dir()函数,他返回一个包含字符串的list。比如,获得一个list对象的所有属性和方法:

Python类和对象以及继承多态(超详细,小白也可以懂)相关推荐

  1. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  2. python类与对象 封装继承与多态 0308

    类与对象 初始化方法 init方法 带参实例化类 del方法 str方法 私有 继承 方法的重写 super 父类名称调父类方法 调用父类私有 间接调用 多继承 新式类经曲类 多态 类属性 类方法 静 ...

  3. java自学 part2 数组 类和对象 包 继承 多态 抽象类 接口

    数组:arr 获取数组的长度:arr.length 数组转字符串: Arrays.toString(arr) 数组的拷贝: Arrays.copyOf(arr,arr.length) 数组的排序:Ar ...

  4. java中的类和对象(重点)超详细

    java中的类和对象 1.类与对象的初步认知 2.类和对象的实例化 3.类的成员 3.1.字段,属性,成员变量 3.2.方法 3.3.static 关键字 3.4.小结 4.封装 4.1.privat ...

  5. python—类和对象之浅拷贝和深拷贝详细讲解

    一.变量的赋值操作 定义:只是形成2个变量,实际上还是指向同一个对象 代码如下: 内存示意图: 将创建CPU类的实例对象赋值给cpu1进行储存,所以cpu1的id为0212, 然后将cpu1赋值给cp ...

  6. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  7. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  8. python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...

    python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...

  9. Python 类的定义、继承及使用对象

    Python 类的定义.继承及使用对象 作者:保⑩洁 本文转载:http://www.17jo.com/program/python/base/ClassUse.html Python编程中类的概念可 ...

  10. 【Python基础入门系列】第10天:Python 类与对象

    首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解. 由于你可能没有编程经验, 所以无法从学过 ...

最新文章

  1. 脚本没有类似C语言的预编译,开源脚本库
  2. ArrayList 集合
  3. wordpress语言文件.po.pot.mo简介及汉化
  4. 好调剂的计算机类工科学校,B区最好调剂的5所工科院校,过线就能入选,性价比高,工科生可选...
  5. 交付方式 saas_扩展和交付SaaS启动的最佳方法
  6. 【codevs1073】家族,胡写并查集
  7. JavaScript 简介 1
  8. python 抓取百度音乐
  9. Thingsboard 3.1.0 - REST API
  10. zrender源码分析4--初始化Painter绘图模块2
  11. 红帽初级认证RHCSA考试环境——供实验练习
  12. C语言:带你轻松干掉 腾讯笔试大题 带环链表
  13. Proxmox VE 配置 朵拉云 桌面虚拟化
  14. 记录下UE4解决EQS Bug的过程
  15. 详解C语言中的switch语句
  16. 小学数学动画 android,小学数学课堂app下载-小学数学课堂 安卓版v2.2.0-PC6安卓网...
  17. cesium 入门学习之一:运行cesium,展示3D地球
  18. 【肌电信号】基于matlab GUI脉搏信号分析(去噪+特征提取)【含Matlab源码 862期】
  19. #HHD32F107# AD采集
  20. postman怎么调中文

热门文章

  1. 抛弃Telemetry,用Faythe连接OpenStack和Prometheus
  2. 利用高德地图周边搜索api获取不同类型的餐厅推荐
  3. python 聚类 客户细分_Python中用K-均值聚类来探索顾客细分
  4. RK3399 制作更新logo.img
  5. java序号带圈_疯狂创客圈 -- Java 高并发社群
  6. 华硕无线路由打印机服务器,华硕RT-AC86U路由器怎么共享打印机
  7. 美式英语口语中连读、略读,音变的技巧
  8. R语言使用sort函数对向量数据进行排序、默认从小到大升序排序、设置decreasing为真进行降序排序
  9. win10多用户同时登陆
  10. 基于Vue3和Nestjs的网上匿名聊天网站的实现