• Python类


    类相当于模板,对象是类的实例。

    可以把类理解成做饼干的模子,对象就是用模子做出的饼干。

    我们定义一个class的时候,我们实际上就定义了一种数据类型,我们定义的数据类型和python自带的数据类型,比如str,list,dict没什么两样

    ---------------------------------------------

    类变量:

    1.在实例化对象中是公用的。

    2.定义在类中且在函数体之外。

    3.通常不作为实例变量使用。

    4.ClassName.bianliang来访问

    --------------------------------------------------

    实例变量:

    1.定义在方法中的变量。

    2.只作用于当前实例的类。

    3.self.bianliang来访问

    实例化:创建一个类的实例,类的具体对象。

    --------------------------------------------------------

    方法:

    类中定义的函数。

    和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self

    并且,调用时,不用传递该参数。

    除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数和关键字参数。

    方法重写,继承,多态。

    ------------------------------------------------------

    创建类:

    class ClassName:

      'xxxxx'    //类文档字符串,可通过ClassName.__doc__查看

      class_suite

    -------------------------------------------------------

    构造方法(初始化方法):

    当创建这个类的实例时就会调用该方法,self代表类的实例,self在定义类的方法时是必须有的。

    创建类的实例的时候,就不能传入空的参数,必须传入与__init__方法匹配的参数,但是self不需要传,init只能有一个

    __init__()方法是可选的,如果不提供,python会给出默认的__init__方法

    def __init__(self,name,score):

      self.name=name

      self.score=score

    可以把要先初始化的属性放到这个函数里面

    name和score为类的实例变量,用  ‘对象名.实例变量名’  访问

    -------------------------------------------------------

    类的实例化:

    对象名=类名()

    emp=Employee("zara",2000)   //emp是Employee类型

    判断一个变量是否是某个类型可以用isinstance()判断: isinstance(emp,Employee),返回true

    -----------------------------------------------------------

    访问属性:

    getattr(obj, name[, default]) : 访问对象的属性。

    hasattr(obj,name) : 检查是否存在一个属性。

    setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。

    delattr(obj, name) : 删除属性。

    ----------------------------------------------------------

    内置类属性:

    __dict__ :类的属性

    __doc__ :类的文档字符串

    __name__:类名

    __module__:类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

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

    -------------------------------------------------------

    类的继承:

    所有类都会继承Object类

    class Son(Parent):

      xxxx

    1.父类的构造(__init__())方法不会被自动调用

    2.class C(A,B):  //继承类A和B

    3.子类实例可以调用父类方法

    4.issubclass(sub,sup) 尔函数判断一个类是另一个类的子类或者子孙类

    5.isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true

    //父类
    class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender
    //子类
    class Student(Person):
        def __init__(self, name, gender, score):         //子类需要自己定义初始化函数,父类的构造(__init__())方法不会被自动调用
            super(Student, self).__init__(name, gender)   //name和gender调用父类的,一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。
            self.score = score

    -----------------------------------------------------

    方法的重写:

    ----------------------------------------------------

    类的私有属性:

    __private_attrs: 只能在类内部方法中通过self.__private_attrs使用

    例子:__secretCount = 0  # 私有变量

    类的私有方法:

    __private_method:只能在类内部调用self.__private_method

    protected变量:

    _foo: 只能允许其本身与子类进行访问,不能用于 from module import *

     ------------------------------------------------

    多态存在的必要条件:

    1.要有继承

    2.要有重写

    Dog类继承Animal类,Dog类产生一个实例变量d,d的数据类型是Dog,也是Animal,当d有某些行为(理解成使用类的方法)时,优先使用Dog类方法。

    输出结果:A B C A E

    没有谁规定test方法是接收的参数是什么类型的。test方法只规定,接收一个参数,调用这个参数的prt方法。

    在运行的时候如果这个参数有prt方法,python就执行,如果没有,python就报错,因为abcde都有prt方法,而f没有,所以得到了上边得结果,这就是python的运行方式。

    --------------------------------------------------------

    析构函数:

    __del__(self):

      xxxx

    当使用del删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

    __del__()也是可选的,如果不提供,则python会在后台提供默认析构函数

    显式的调用析构函数,可以使用del关键字,例如:del 对象名

    ----------------------------------------------------------

     

     

     

     

  • 相关阅读:
    pyhton 线程锁
    python 守护线程
    python 线程
    python 判断文件的字符编码
    python 进程管道
    python 进程池
    webpack学习(一)起步安装
    最近特别喜欢的一首歌
    你真的了解回流和重绘吗?
    你了解SEO中的时效性吗?
  • 原文地址:https://www.cnblogs.com/zz27zz/p/7427602.html
Copyright © 2020-2023  润新知