#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类,类能访问到数据属性和函数属性,不能访问至实例属性#3.静态属性:@property,把函数封装成一个数据属性的形式,让外部调用时看不到内部的逻辑;特点:定义时有self(实例本身)##################################################################################################################组合(拼接):定义一个人的类,比如手、头、脚,这个属性又可以是通过一个实例化的对象,这就是组合#用途:1.做关联、2.小的组成大的# class Head:#     pass# class Foot:#     pass# class Trunk:#     pass# class Hand:#     pass# class Person:#     def __init__(self,id_num,head,foot,trunk,hand):#         self.id_num = id_num#         self.head = head()#         self.foot = foot()#         self.trunk = trunk()#         self.hand = hand()# P1 = Person.__dict__# print(P1)# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day25.py# {'__module__': '__main__', '__init__': <function Person.__init__ at 0x000000000297A6A8>,# '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__':# <attribute '__weakref__' of 'Person' objects>, '__doc__': None}## Process finished with exit code 0################################################################################################################## class School:#     def __init__(self,name,addr):#         self.name = name#         self.addr = addr## class Course:#     def __init__(self,name,price,period,school):#         self.name = name#         self.price = price#         self.period = period#         self.school = school#     def employ(self):#         print('%s 正在empoying'%self.name)# s1 = School('oldboy','beijing')# s2 = School('oldboy','nanjing')# s3 = School('oldboy','dongjing')# c1 = Course('linux',10,'1h',s1)# c2 = Course('Python',100,'100h',s2)# msg = '''# 1 oldboy beijing# 2 oldboy nanjing# 3 oldboy dongjing# '''# while True:#     print(msg)#     menu = {#         '1':s1,#         '2':s2,#         '3':s3#     }#     choice = input('选择学校>>>')#     school_obj = menu[choice]#     # choice2 = input('选择课程>>>')#     name = input('课程名>>: ')#     price = input('课程费用>>: ')#     period = input('课程周期>>: ')#     new_course = Course(name, price, period, school_obj)#     print('课程【%s】属于【%s】学校' % (new_course.name, new_course.school.name))# 模拟选课################################################################################################################################################################################################################################################################################################################################# 面向对象的三大特性# 1.继承 2.多态 3.封装# 一、什么是类的继承?# 类的继承跟现实中的父子、孙子、重孙子、继承关系一样,父类又称为基类# python中的类的继承分为:单继承和多继承# class ParentClass1:#     pass# class ParentClass2:#     pass# class SubClass(ParentClass1): #单继承#     pass# class SubClass(ParentClass1,ParentClass2): #多继承#     pass# 二、子类到底继承了父类的什么属性# 子类调用方法会触发父类的init方法,子类继承了父类的所有属性,但是子类的方法还是先调用自己的方法,找不到自己的方法才会去# 父类去找方法或属性# class robot:#     power = 100#     def __init__(self,name,energy):#         self.name = name#         self.energy = energy#     def act(self):#         print('%s机器人正在消耗能源'%self.name)# class robot_arm(robot):#     def __init__(self,type):#         self.type = type#     def act1(self):#         print('%s型号机器人正在动arm'%self.type)# r = robot('pandaboy','氢气能源')# r1 = robot_arm('ASII')# r1.act1()# print(r1.power)################################################################################################################## F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day25.py# ASII型号机器人正在动arm# 100## Process finished with exit code 0################################################################################################################################################################################################################################### 什么时候用继承?# 1.当类之间有显著不同,并且较小的类是较大的类所需要的组件,用组合比较好# 例如:描述一个机器人类,机器人这个大类是由很多互不相关的小类组成的,如机器手臂类、身体类、电池类等# 2.当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好################################################################################################################## 什么是派生?# 当然子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,# 一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。################################################################################################################## 继承同时具有两种含义# 含义一:继承基类的方法,并且自己的改变或者扩展(代码重用)# 含义二:声明某个子类兼容于某基类,定义一个借口类,子类继承接口类,并且实现接口中定义的方法# 实践中,继承的第一种含义意义并不是很大,甚至是有害的,因为它使得子类与基类出现强耦合# 继承的第二种含义非常重要,它又叫"接口继承"# 接口继承实质上是要求"做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可以一视同仁# 的处理实现特定接口的所有对象——这在程序设计上叫做归一化"# 归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合——就好像linux的泛文件对象概念一样,# 所有的东西都可以当做文件处理,不必关心它是内存、磁盘、网络还是屏幕(当然,对于底层设计者,也可以区分出"字符设备"和"块设备")# 然后做出针对性的设计,细致到什么程度,视需求而定# 一切皆文件是没有意义的,归根结底就是全部都是读和写################################################################################################################## 接口继承代表定义一个基类,类当中把接口的方法定义一个函数,来一个子类就必须实现基类的方法# 接口就是一个函数# import abc# 1.python可以继承多个类,java和c只能继承一个类# 2.python如果继承了多个类,那么寻找方法的方式有两种,分别是深度优先和广度优先# 当类是经典类时,多继承情况下,会按照深度优先方式查找# 当类时新式类时,多继承情况下,会按照广度优先方式查找#————————————————————————————————————————————————————————# 继承顺序# class A:#     pass# class B(A):#     pass# class C(A):#     pass# 在子类中继承父类# super().__init__()# 运行super调用super下的方法

转载于:https://www.cnblogs.com/pandaboy1123/p/8485838.html

Pyhton学习——Day25相关推荐

  1. pyhton学习实例demo

    pyhton学习实例demo 一行代码输出特定字符"Love"拼成的心形 一行代码打印九九乘法表 一行代码打印九九乘法表 一行代码计算出1-100之间的素数(两个版本) 一行代码输 ...

  2. JAVA萌新学习day25 css

    JAVA萌新学习day25 css 一.CSS概念: CSS :层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应 用)或XML(标准 ...

  3. pyhton学习之找出单词的个数并进行排序

    在学习C的时候,我们经常会做这样的算法题来提高我们的编程能力,然而在python中使用封装好的类库,就可以简单完成. 需要的模块有:re :该模块可以通过一定的规则寻找目标   Counter主要是用 ...

  4. Pyhton学习笔记第一天(Python基本语句)

    Python学习笔记第一天 注释 行注释 块注释 输出语句 举一反三 标识符 举一反三 多行语句 结束语 注释 什么是注释,注释相当于备注的信息,也可以在调试代码的时候隐藏执行代码,但只适合新手.老手 ...

  5. Pyhton学习——Day3

    # li = [1,12,9,"age","alex"] # #列表表示为[]括起来 # #列表用","分割每个元素 # #列表中的元素可以 ...

  6. Pyhton学习——Day9

    #文件操作的其他方法 ###############################################################################文件的内置操作函数# ...

  7. day10 Pyhton学习

    一.昨日内容回顾 函数: 定义:对功能或者动作的封装 def 函数名(形参): 函数体 函数名(实参) return:  返回,当程序运行到return的时候,终止函数的执行 一个函数一定拥有返回值 ...

  8. pyhton学习,day1作业,用户名密码登录模块

    要求,通过用户名密码登录,登录错误3次,锁定用户名 1 # coding=utf-8 2 # Author: RyAn Bi 3 4 import os, sys #调用系统自己的库 5 6 acco ...

  9. pyhton学习-1

    Python的变量不需要声明,可以直接输入. 内置函数type(), 用以查询变量的类型. 例如: print type(a) 如果想让 a 存储不同的数据,不需要删除原有变量就可以直接赋值. pri ...

最新文章

  1. 转 ios 里如何判断当前应用的定位服务是否可用
  2. 【学习笔记】月末操作-自动清账
  3. 关于怎么怎么把 unsingned char 数据转换为 Opencv 的Mat类型,并且吧图像显示出来
  4. python缺点这么多、为什么还流行_Python这么火,为什么说它不是未来的编程语言?...
  5. About Gaelyk
  6. Unity制作简单动画效果
  7. pdf文件怎么拆分页面为多个pdf
  8. 聚蓝bluetech便携式移动滤水壶 家用净水壶,值得拥有
  9. 一文了解无聊猿(BAYC)的 NFT 帝国是如何形成的
  10. 十七、网上商城项目(5)
  11. 计算机图形学——二维图形几何转换
  12. pycharm配置深度学习环境:conda env create -f environment.yml报错
  13. 基于FMCW技术的汽车自适应巡航控制
  14. 图解Word2vec,读这一篇就够了!
  15. 移动互联网人口红利几近消失 百度李彦宏称人工智能才是解药
  16. ListView数据更新UI不刷新
  17. Pikachu 的 Xss 靶场 全 通过笔记
  18. 【大咖专栏】在Kubernetes中手动恢复Rook存储集群
  19. tableau创建计算字段,进行年龄段分类
  20. Java报错 the trustAnchors parameter must be non-empty

热门文章

  1. oracle linux6 u盘安装,Oracle Enterprise Linux/Redhat Linux 6.0 U盘安装方法
  2. postman测试带权限接口_接口测试工具:postman
  3. linux教程opensuse,OpenSUSE/Linux 网络配置
  4. Windows VS c++复制文件到网络共享文件夹的实现
  5. intel服务器最新主板芯片组,intel主板芯片组的介绍
  6. 操作系统:Windows 11 来了 !无需安装即可体验 !
  7. 操作系统:电脑的回收站的秘密你知道吗?
  8. 操作系统基础:进程知识笔记(三)
  9. 服务器遭受攻击后,这样排查处理不背锅!
  10. 也许,这样理解HTTPS更容易