• 八、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、透彻而仔细地考虑每个场景,确保模型包含了所需的一切。 

  • 相关阅读:
    eclipse-SDK-3.7-win32;eclipse-java-indigo-win32;eclipse-jee-indigo-win32 区别(ZZ)
    Marketplace Client- Download
    Log4J2基本配置
    Map 迭代 两种方法
    Python Argparse模块
    Python操作Memcached
    MySQL参数调优
    Nginx调优
    JavaScript知识点总结[部分]
    python optparser模块
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12441966.html
Copyright © 2020-2023  润新知