zoukankan      html  css  js  c++  java
  • Python 笔记 : 类和继承

    1. # -*- coding=  utf-8 -*-   
    2. # 文件编码定义的语法规则是: coding[:=]/s*([-/w.]+)  
    3. # 未指定编码将默认为 : ASCII  
    4. # 同时要注意物理文件的编码也要符合本语言指定的编码  
    5. # 更多可参考: http://python.org/dev/peps/pep-0263/  
    6. class CBase:   
    7.     '''''资源相关类'''     # 通过CBase.__doc__ 或者类实例.__doc__ 可以输出此说明  
    8.     counter = 0;    # 这是属于类的变量,相当于c++的静态变量,公有  
    9.     __counter = 1;  # 变量前加双下划线,将被认为是私有变量  
    10.                     # 在类外不能访问,否则认为是公有的变量  
    11.     #在Python 中的 __init__相当于C++的constructor,   
    12.     #在__init__中定义的是对象的变量,相当于c++的普通变量  
    13.     def __init__(self,name):    
    14.         self.name = name        # 普通对象变量,公有  
    15.         self.__private1 = 2     # 私有普通变量,私有  
    16.         print('__init__ base')   
    17.           
    18.     # __del__ 相当于c++的destructor  
    19.     def __del__(self):        
    20.         print(' base destruct')  
    21.       
    22.     # 任何一个类方法必须至少有一个参数  
    23.     #   这个参数相当于C++的this指针  
    24.     #   这个参数必须是第一个参数  
    25.     #   约定通常写作self  
    26.     def Help(self):             
    27.         '''''Help doc'''      # 方法的doc,引用语法 [类名|实例].方法名.__doc__  
    28.         print('---base help begin---/n',self.name)     # 在这儿引用类普通变量  
    29.         print(CBase.__counter) # 即便是本类的方法引用自己的静态变量,  
    30.                                     # 也需要加类名或者self 限定  
    31.         print(self.__private1)  #私有变量只有本类方法有权限引用  
    32.         print('---base help end---/n')  
    33.           
    34.     def Test(self):  
    35.         print('Base Test')  
    36.       
    37.       
    38. # 类的继承  
    39. # 可进行多重继承,语法class CC(CA,CB)  
    40. class CHigh(CBase):   
    41.     def __init__(self):  
    42.         CBase.__init__(self,'high') # 调用基类的构造时,要手动传入第一个参数  
    43.         print('__init__ high')  
    44.           
    45.     def __del__(self):  
    46.         #CBase.__del__(self), 基类的析构函数是不能调用的  
    47.         # 基类的析构的函数也不会被自动调用  
    48.         print(' High destruct')  
    49.           
    50.     # 继承类的方法会覆盖掉基类的同名方法  
    51.     def Test(self):  
    52.         print('High Test ')  
    53.       
    54.     # python没有方法重载的概念  
    55.     # 源文件中最后一个定义的方法将会覆盖掉之前的同名方法  
    56.     # 现在在调用Test,必须传递第二个参数name  
    57.     # 上面的具有一个参数的Test方法被覆盖掉了.  
    58.     def Test(self,name):  
    59.         print('High Test have arg:',name)  
    60.           
    61. rh = CHigh()  
    62. #rh = CBase('hello')  
    63. rh.Help()  
    64. rh.Test();  
    65. print(CBase.counter)  
    66. print(rh.name)  
  • 相关阅读:
    bootstrap 模态框一闪而过的问题
    ${requestScope.paramName} 与 ${param.name}
    Android控件
    质量属性
    android基础知识复习一
    Numpy基础篇二
    miniconda 搭建tensorflow框架
    Numpy基础篇一
    pandas 数据索引与选取
    《架构漫谈》阅读笔记
  • 原文地址:https://www.cnblogs.com/rrxc/p/4039422.html
Copyright © 2011-2022 走看看