Python学习笔记----面向对象(类)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gc0823/article/details/50389831

三:类

1:创建类,括号内可以添加父类,object是“所有类之母”,如果类没有继承任何其它类,则将object作为默认的父类,

                      pass处添加具体代码

            

    类的实例化:  eg:   MyClassObject = MyClass()

            

    创建子类:class  子类名(父类名):子类继承父类的所有属性和方法,构造器须单独定义,父类的构造器要显示写出才被执行,即父类._init_()


2: 类数据属性   -----------------类名.属性名

       查看类的属性:内建函数dir(类名) ,返回的是一个名字列表

                                   类名._dict_,返回的是一个字典

扫描二维码关注公众号,回复: 3838552 查看本文章

      特殊类属性:_name_    返回类名

                           _doc_       返回类的文档字符串

                           _bases_    返回所有父类构成的元组

                           _dict_          返回类的属性

                           _module_    返回类的模块

                           _class_          返回类中所对应的类

     实例属性-----------------------实例.属性名

             当一个实例被释放时,它的属性同时也被清除。

     特殊实例属性:_class_      实例的所属类

                              _dict_        实例的属性


类属性和实例属性的区别:

(1):当类属性不可变情况下:当类属性变化,则实例属性也变化

                                                           当实例属性变化,而类属性不变化

(2):当类属性可变情况下(像属性为列表、字典等):当类属性变化,则实例属性也变化

                                                                                                      当实例属性变化,而类属性也变化


3: 方法:给类添加功能,在类中定义方法,函数的第一个参数为self,并且方法必须绑定到一个实例上才能使用,self它表示调用此方法的实例对象。

特殊方法:_init_():在类实例化过程中调用,像C++中的构造函数,叫构造器

                                     在子类中重写_init_()且子类被实例化时,父类的_init_()不会被自动调用,若想调用,则可以在子类的_init_

                               中显式写出          父类._init_(self)或者用super(子类,self)._init_()


                 _new_():一种静态方法,并且传入的参数是在类实例化操作时生成的。通常设置不变数据类型的子类。

                 _del_():当类实例的引用计数为0时,则调用方法将实例清除,且只被调用一次,且也要显式调用父类的_del_()。

4:类、实例的内建函数

(1)issubclass(子类,父类):判断一个类是另外一个类的子类或者子孙类。

(2)isinstance(实例,类(类型)):判断一个实例是不是给定类的实例。

(3)hasattr(实例,属性)、getattr(实例,属性)、setattr(实例,属性,属性值)、delattr(实例,属性):对属性的操作。

(4)dir(参数):列出参数内的所有属性信息。

(5)vars():返回是一个字典,且对象参数必须有_dict_属性。

5:多态

顾名思义,表示是多种形式,意味着*可以对不同类的对象使用同样的操作*,多态不仅适用于方法中,也适用于内建运算符和函数。

将不同类中的共同方法抽取到同一类中(不同类继承到同一类中)

6:重新构造方法

如果一个子类的构造方法进行重写,那么需要调用超类的构造方法来确保进行基本初始化

方法一:在子类的__init__(self)中加入超类.__init(self)-------------------------用在普遍情况下

方法二:在子类的__init__(self)中加入super(子类,self).__init__()-----用在多个超类时方便


猜你喜欢

转载自blog.csdn.net/gc0823/article/details/50389831