• 目录

    • 对象的独有功能
    • 动静态方法
    • 面向对象的特征
      • 面向对象的的三大特征
      • 继承的本质
      • 不继承的名字查找顺序
      • 单继承的名字查找顺序
      • 多继承的名字查找顺序
    • 经典类与新式类
    • 派生方法
  • 对象的独有功能

   1.定义:绑定在类中的函数(每个被类创造出的对象所使用类中的方法从而获得不同数据)

class Computer:
name = '电脑' def price(self, model):
print(f'{model}电脑便宜出售') com1 = Computer()
com2 = Computer()
com1.price('联想') # 联想电脑便宜出售
com2.price('苹果') # 苹果电脑便宜出售
  • 动静态方法

   1.绑定给对象的方法,直接在类体代码中编写即可,对象调用会自动将对象当做第一个参数传入

   2.绑定给类的方法类 调用则有几个形参就传几个实参

   3.静态方法(普通函数)

class Computer:
name = '电脑' def price(self, model):
print(f'{model}电脑便宜出售{self}') # self <__main__.Computer object at 0x0000015A98BBE048> @classmethod
def func(cls, type):
print(f'{type}电脑性能很好{cls}') # cls <class '__main__.Computer'> @staticmethod
def exterior(type):
print(f'{type}电脑外观好看') com1 = Computer()
com2 = Computer()
com1.price('联想') # 联想电脑便宜出售
com2.price('苹果') # 苹果电脑便宜出售
Computer.price(com1, '联想') # 联想电脑便宜出售<__main__.Computer object at 0x000001F638F2E048>
com1.func('笔记本') # 联想电脑性能很好<class '__main__.Computer'>
Computer.func('笔记本') # 联想电脑性能很好<class '__main__.Computer'>
com1.exterior('笔记本') # 联想电脑外观好看
Computer.exterior('笔记本') # 联想电脑外观好看
  • 类的三大特征之继承

   1.类的三大特征:

    1.1 继承

    1.2 封装

    1.3 多态

   2.继承的本质:获得别的类的属性(数据与功能)之间的关系称为父类、基类或超类与子类、派生类

    2.1 对象:数据和功能的结合体

    2.2 类:多个对象相同的数据和功能的结合体

    2.3 父类:多个类相同的数据和功能的结合体

      类和父类最主要的功能其实就是节省代码

class School:
name = '华清大学' def education(self, name):
print(f'{name}授课') class Student(School):
major = '摄影专业' def __init__(self, hobby):
self.hobby = hobby print(Student.name) # 华清大学
stu1 = Student(School)
Student.education(stu1, '李老师') # 李老师授课
stu2 = School()
School.education(stu2, '李老师') # 李老师授课
Student.education(stu2, '李老师') # 李老师授课

   3.类不继承的名字查找顺序:对象先查找自身名称空间、自身没有再查找创造对象的类的名称空间、都无报错 (自身>>>类)

class School:
name = '华清大学' # 2 def major(self, name):
print(f'{name}') stu1 = School()
stu1.name = '摄影专业' # 1
print(stu1.name) # 摄影专业

stu1 = School()
print(stu1.name) # 华清大学

   4.类单继承的名字查找顺序:对象先查找自身名称空间、自身没有再查找创造对象的类的名称空间,再无查找继承的父类的名称空间、都无报错(自身>>>类>>>父类)

class School:
name = '华清大学' # 3 class Student(School):
# name = '摄影一班' # 2 def major(self, name):
print(f'{name}') stu1 = Student()
stu1.name = '摄影专业' # 1
print(stu1.name) # 摄影专业 stu1 = Student()
print(stu1.name) # 摄影一班 stu1 = Student()
print(stu1.name) # 华清大学

   

   5.类多继承的名字查找:

    5.1 每个分支最后继承的类没有共同继承的类:自身>>>类>>>每个分支一层一层父类

class School1:
# name = '华清大学' # 4
pass class School2:
# name = '宜荷大学' # 6
pass class School3: # 8
# name = '南芜大学'
pass class Major1(School1):
# name = '摄影专业' # 3
pass class Major2(School2):
# name = '绘画专业' # 5
pass class Major3(School3):
# name = '多媒体专业' # 7
pass class Student(Major1, Major2, Major3):
# name = '摄影一班' # 2 def grade(self, name):
print(f'{name}') stu1 = Student()
# stu1.name = '大三' # 1
print(stu1.name)

  

    5.2   每个分支最后继承的类有共同继承的类:自身>>>类>>>每个分支一层一层父类>>>共同继承的类

class Country:
name = '中国' # 9
pass

class School1(Country):
# name = '华清大学' # 4
pass class School2(Country):
# name = '宜荷大学' # 6
pass class School3(Country): # 8
# name = '南芜大学'
pass class Major1(School1):
# name = '摄影专业' # 3
pass class Major2(School2):
# name = '绘画专业' # 5
pass class Major3(School3):
# name = '多媒体专业' # 7
pass class Student(Major1, Major2, Major3):
# name = '摄影一班' # 2 def grade(self, name):
print(f'{name}') stu1 = Student()
# stu1.name = '大三' # 1
print(stu1.name)

  • 经典类与新式类

   1.经典类:python2环境中无法直接继承object祖先辈类,所以需要手动继承,不然很多功能无法使用

   2.新式类:python3环境中默认直接继承object祖先辈类,所以无需手动继承,但为防止可能会切换python2环境,所以建议加object类

class School:
name = '华清大学'
print(f'{name}') print(School.__base__) # class 'object'> class School(object):
name = '华清大学'
print(f'{name}') print(School.__base__) # class 'object'>
  • 派生方法:在子类中定义父类的功能并增加功能
class School:
name = '华清大学' def __init__(self, rank):
self.rank = rank class Student(School):
def __init__(self, rank, major):
School.__init__(self, rank)
# super.__init__(rank)
self.major = major stu1 = Student('排名第一', '摄影专业')
print(stu1.__dict__) # {'rank': '排名第一', 'major': '摄影专业'}
print(stu1.rank) # 排名第一 class School(list):
def append(self, value):
# if value == '清水高中':
# return
super().append(value) sch1 = School()
sch1.append('南芜大学')
print(sch1) # ['南芜大学']
sch1.append('清水高中') # ['南芜大学']
print(sch1)
sch1.append('宜荷大学')
print(sch1) # ['南芜大学', '宜荷大学'

最新文章

  1. Date.prototype.format
  2. 用js写的极简的导航菜单,带下拉列表
  3. Android 2016新技术
  4. 用CMake屏蔽Release运行时的控制台窗口
  5. iOS开发——高级篇——Objective-C特性:Runtime
  6. JVM-程序编译与代码晚期(运行期)优化
  7. 【JavaScript】 2013年度最强AngularJS资源合集
  8. .net-.net试题2
  9. UIView的基本属性及ANimation
  10. Oracle实战笔记(第四天)
  11. WebApplicationContext类的作用
  12. java中super关键字的作用
  13. CentOS6下4网口绑定双IP
  14. tomcat quartz 被触发两次
  15. JS膏集04
  16. laravel框架中报错 DataTables warning: table id=xxx-table - Cannot reinitialise DataTable.
  17. 第三百四十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理
  18. Collection模块
  19. JS将阿拉伯数字转为钱
  20. YourUninstaller注册码(可用)

热门文章

  1. git clone指定分支
  2. webpack.config.js和vue.config.js的区别
  3. git指令使用
  4. Es图形化软件使用之ElasticSearch-head、Kibana,Elasticsearch之-倒排索引操作、映射管理、文档增删改查
  5. CF1580E Railway Construction
  6. DataX异构数据源离线同步工具json文件配置说明
  7. FFT 小记
  8. ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍
  9. SQL Server默认数据库存放位置
  10. 国内外组态软件对比分析(InTouch、WinCC、iFix、iNeuOS)