• python之路---类


    1.类里定义的变量函数等称为这个类的属性

      除数据属性(也叫实例变量)外,类实例的另一类属性就是方法。

    2.类定义可以写在程序里的任何地方,这一点与函数定义的情况类似。

      例如:可以把类定义放在某个函数定义里,或者放在另一个类定义里---------建立了一个局部的类定义,

         但通常把类定义写在模块最外层,这样定义的(类)类型在整个模块里都可以用,而且允许其他模块里通过import语句导入和使用。

    3.python语言里,所有属性引用(属性访问)都采用圆点记法。

    4.每个类对象都有一个默认存在的__doc__数据属性,其值是该类的文档串。即注释内容

      对象.__doc__(或类.__doc__)

    5.(1)如果在一个类里定义了__init__方法,在创建这个类的实例时,Python解释器就会自动调用这个方法。

       (2)__init__第一个参数是self,其总表示当前正在创建的对象。

     (3)p = Person('fengyu')  完成的一系列动作:

          ①创建一个Person类型的对象;

          ②调用Person类的__init__函数给这个对象的name数据属性(__init__函数中的属性)赋值;

          ③返回新建的对象

          ④最后, 赋值语句把这个新对象赋给变量p,作为其约束值。如p的name属性。被约束于字符串'fengyu'。

    6.每一个实例对象是一个局部名称空间,其中包含该对象的所有数据属性及其约束值。

     如果建立的是空对象(p = Person(),p就是空对象),它就有一个空的名称空间。

    7.Python允许在任意方法里给原本没有的(也就是说,初始化函数没建立的)属性赋值,这种赋值将扩大该对象的名称空间。但在实际中这种做法并不多见。

    8.一个实例对象是一个独立的数据体,可以像其他对象一样赋给变量作为约束值,或者传进函数处理,或者作为函数的结果返回等。

     实例对象也可以作为其他实例对象的属性值(无论是同属一个类的实例对象,或不属于同一个类的实例对象),即组合。

    9.类定义的作用域规则:

      在类里定义的名字具有局部作用域,在类里和类外使用,需基于类名或对象名的属性引用方式,即类名(对象名).名字

      类的局部作用域和函数的局部作用域有不同的规定:

          函数:局部名字的作用域自动延伸到内部嵌套的作用域。

          类:不自动延伸,所以要用基于类名或对象名的属性引用方式

     10.继承的两个作用:

      (1)减少重复性代码;

      (2)建立一组类(类型)之间的继承关系,利用这种关系有可能更好的组织和构造复杂的程序。

    11.内置函数super,把它用在派生类的方法定义里,就是要求从这个类的直接基类开始做属性检索(而不是从这个类本身开始查找)

    class A:
        def func(self):
            print('in A')
    class B(A):
        def func(self):
            super().func()
            print('in B')
    class C(A):
        def func(self):
            super().func()
            print('in C')
    class D(B,C):
        def func(self):
            super().func()
            print('in D')
    
    d = D()
    d.func()

    打印结果:
    in A
    in C
    in B
    in D
    class A:
        def func(self):
            print('in A')
    class B(A):
        def func(self):
            print('in B')
            super().func()
    class C(A):
        def func(self):
            print('in C')
            super().func()
    class D(B,C):
        def func(self):
            print('in D')
            super().func()
    
    d = D()
    d.func()


    打印结果:
    in D
    in B
    in C
    in A
  • 相关阅读:
    Android开发笔记——WebView
    字符串_最小表示法求循环串的最小序列(HDU_4162)
    STL_map简单应用(HDU_1075)
    DP_最大子序列和(HDU_1003)
    STL map 使用方法(转)
    数学_线性筛法建立素数表(HDU_1262)
    學習筆記 ADO數據庫訪問技術
    C#多线程学习
    Java容器
    选取单元格的基本语句
  • 原文地址:https://www.cnblogs.com/yanyufeng/p/9637617.html
Copyright © 2020-2023  润新知