zoukankan      html  css  js  c++  java
  • 八、python对象和类

    创建自定义对象

    1、对象魔法

        对象:一系列数据(属性)以及一套访问和操作这些数据的方法。

        多态:可对不同类型的对象执行相同的操作

        封装:对外部隐藏有关对象工作原理的细节

        继承:可基于通用类创建出专用类

      1.1 多态与方法

        即便你不知道变量指向的是哪种对象,也能够对其执行操作,且操作的行为将随对象所属的类型(类)而异。    

        与对象属性相关联的函数称为方法。

      1.2 封装与属性

        属性是归属于对象的变量

        属性描述对象的状态

        属性能被对象的方法修改

        总结:对象将一系列函数(方法)组合起来,并赋予它们访问一些变量(属性)的权限,而属性可用于在两次函数调用之间存储值。

      1.3 继承

        子类具有父类的所有属性和方法,且其或有易于父类的属性和方法

    2、类

      2.1 类是什么

        类——一种对象。

        每个对象都属于特定的类,并被称为该类的实例

        类由其支持的方法定义。

        子类(subclass)

        超类(superclass)

      2.2 创建自定义类

        

        

      2.3 属性、函数和方法

        方法(关联的方法)将其第一个参数(self)关联到它所属的实例,因此无需提供这个参数。

      2.4 隐藏

        要让方法或属性称为私有的(不能从外部访问),只需让其名称以两个下划线打头即可。

        私有属性不能从对象外部访问,而只能通过存取器方法(如get_name和set_name)来访问。

        注意

          在类定义中,对所有以两个下划线打头的名称都进行转换,即在开头加一个下划线和类名,就能从类外访问私有方法。

          

         

        如果你不希望名称被修改,又想发出不要从外部修改属性或访问方法的信号,可用一个下划线打头,这是一个约定。

      2.5 类的命名空间

        在class语句中定义的代码都是在一个特殊的命名空间(类的命名空间)内执行,而类的所有成员都可访问这个命名空间。

        

        

      2.6 指定超类

        要指定超类,可在class语句中的类名加上超类名,并将其用圆括号括起。

      2.7 深入讨论继承

        要讨论一个类是否是另一个类的子类,可使用内置方法issubclass

        

        如果你有一个类,访问其特殊属性__bases__可以知道它的基类 

          

        要确定对象是否是特定类的实例,可使用isinstance

        

         如果你想要获悉对象属于哪个类,可使用属性__class__

        

        type(s)也可以获悉其所属的类

        

      2.8 多个超类

        多重继承。

        

        多个超类的超类相同时,查找特定方法或属性时访问超类的顺序称为方法解析顺序(MRO)。  

        一种常见的做法是使用一个核心超类以及一个或多个混合超类。

      2.9 接口和内省

         对象遵循特定的接口(即实现特定的方法)    

         

      2.10 抽象基类

        Python通过引入模块abc为所谓的抽象基类提供支持。

        

    3、面向对象设计 

      要确定需要哪些类以及这些类应包含哪些方法时,可以这样做:

        1、将有关问题的描述(程序需要做什么)记录下来,并给所有的名称、动词和形容词加上标记

        2、在名词中找出可能的类

        3、在动词中找出可能的方法

        4、在形容词中找出可能的属性

        5、将找出的方法和属性分配给各个类

      改进模型

        1、记录(或设想)一系列用例。

        2、透彻而仔细地考虑每个场景,确保模型包含了所需的一切。 

  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12441966.html
Copyright © 2011-2022 走看看