zoukankan      html  css  js  c++  java
  • Python中的类基本概念

    一、面向过程和面向对象

    面向过程和面向对象是两种编程风格

    面向过程,即怎么去实现,主要考虑功能实现的步骤和过程,多使用函数组合相互调用实现

    面向对象,即谁去实现,怎么配合,主要考虑动作的主体之间的相互关系,面向对象将不同的操作按主体进行划分,然后指挥不同的对象组合完成不同的操作

    二、面向对象基本概念

    1、类:用来描述具有相同属性和方法的对象的集合,类定义了该集合中每个对象所共有的属性和方法,对象是类的实例

    2、数据变量:类变量或实例变量,用来处理类及实例对象相关的数据

          类变量:类变量在所有实例对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用

          实例变量:在类的声明中,属性是用变量来表示的,这种变量称为实例变量,实例变量定义在类中且在其他成员方法之外

          局部变量:定义在方法中的变量,只作用于当前的实例

    3、方法:类中定义的函数

    4、继承:一个派生类继承基类的字段和方法,继承也允许把一个派生类作为一个基类对象看待

    5、重写:如果从父类继承的方法不能子类的需求,可以对其进行改写,这种过程叫方法的覆盖,也叫方法的重写(override)

    6、实例化:创建一个类的实例,即类的具体对象

    7、对象:通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法

    三、类的使用

    1、创建类

    使用class语句创建类

    class ClassName:
        '类的帮助信息'  #类文档,可以通过ClassName.__doc__查看
        class_suite  #类的实体

    实例

    # -*- coding: UTF-8 -*-
    
    class Employee:
        '所有员工的基类'
        empCount = 0  #类变量,在类的所有实例对象中共享,可以在内部类或外部类中使用Employee.empCount来访问
    
        def __init__(self, name, salary):  #__init__类的构造函数或实例化方法,创建类的实例会调用该方法
            self.name = name
            self.salary = salary
            Employee.empCount += 1
    
        def displayCount(self):  #类方法,与普通函数不一样,必须有额外的第一个参数名称self,self代表类的实例,而非类
            print("Total Employee %d" % Employee.empCount)
    
        def displayEmployee(self):
            print("Name : ", self.name, ", Salary: ", self.salary)
    
    
    "创建 Employee 类的第一个对象"
    emp1 = Employee("Zara", 2000)
    "创建 Employee 类的第二个对象"
    emp2 = Employee("Manni", 5000)
    emp1.displayEmployee()
    emp2.displayEmployee()
    print("Total Employee %d" % Employee.empCount)
    print(Employee.__doc__)

    2、创建实例对象

    Python中没有关键字new,类的实例化类似于函数调用,使用类的名称来实例化,通过__init__接收参数

    3、访问属性

    使用点号.来访问对象的属性

    4、销毁对象

    析构函数__del__在对象销毁时候使用,当对象不再被使用时,__del__方法运行

    四、Python内置类属性

    __dict__:类的属性(包含一个字典,由类的数据属性构成)

    __doc__:类的文档字符串

    __name__:类名

    __module__:类定义所在的模块

    __bases__:类的所有父类构成的元素(包含了一个由所有父类构成的元组)

    五、Python对象销毁机制

    Python使用了引用计数来跟踪和回收垃圾

    在Python内部记录着所有使用中的对象各有多少引用,一个内部跟踪变量,称为引用计数器

    当一个对象被创建时,就创建了一个引用计数器,当对象不再需要时,这个对象的引用计数变为0,解释器会在适当的时机,将垃圾对象占用的内存空间进行回收

    六、类的继承

    通过继承创建的类称为派生类或子类,被继承的类称为基类或父类

    继承类

    class 派生类名(基类名):
        ...

    多重继承

    class 派生类名(基类名1,基类名2,基类名3,...):
        ...

    Python中继承的特点

    1、如果子类需要父类的构造方法,就要显式的调用父类的构造方法,或者不重写父类的构造方法

    2、在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量

    3、Python查找对应类型的方法时,先在本类中查找调用的方法,查不到时,再去基类中逐个查找

    七、类属性与方法

    1、类的私有属性

    __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问,在类内部的方法使用self.__private_attrs访问

    2、类的私有方法

    __private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部被调用,在类内部使用self.__private_method访问

    3、类方法

    在类的内部,使用def关键字为类定义一个方法,类方法必须包含参数self,且为第一个参数

    4、单下划线开头

    以单下划线开头表示是protected类型的变量,即保护类型变量只允许本身和子类访问,不能用于from module import

    5、双下划线开头

    以双下划线开头表示是private类型的变量,即私有类型变量只允许这个类本身进行访问

    6、双下划线开头和结尾

    一般是系统定义的名字,例如__init__

    八、类属性和实例属性

    实例属性属于各个实例所有,互不干扰

    类属性属于类所有,所有实例共享一个属性

    当实例属性和类属性名称相同时,访问实例属性会访问到实例属性值,当删除实例属性值时,再访问会访问到类属性,所以不要对实例属性和类属性使用相同的名字

  • 相关阅读:
    Linux 部署 .net
    转载:什么才是真正的 RESTful 架构
    Web Api资料
    nginx 配置
    Nginx 资料
    session、cookie资料
    WCF 资料
    投资
    解决在控制层springmvc框架发出的400状态的错误
    解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
  • 原文地址:https://www.cnblogs.com/testerlina/p/14968663.html
Copyright © 2011-2022 走看看