# -*- coding= utf-8 -*- # 文件编码定义的语法规则是: coding[:=]/s*([-/w.]+) # 未指定编码将默认为 : ASCII # 同时要注意物理文件的编码也要符合本语言指定的编码 # 更多可参考: http://python.org/dev/peps/pep-0263/ class CBase: '''资源相关类''' # 通过CBase.__doc__ 或者类实例.__doc__ 可以输出此说明 counter = 0; # 这是属于类的变量,相当于c++的静态变量,公有 __counter = 1; # 变量前加双下划线,将被认为是私有变量 # 在类外不能访问,否则认为是公有的变量 #在Python 中的 __init__相当于C++的constructor, #在__init__中定义的是对象的变量,相当于c++的普通变量 def __init__(self,name): self.name = name # 普通对象变量,公有 self.__private1 = 2 # 私有普通变量,私有 print('__init__ base') # __del__ 相当于c++的destructor def __del__(self): print(' base destruct') # 任何一个类方法必须至少有一个参数 # 这个参数相当于C++的this指针 # 这个参数必须是第一个参数 # 约定通常写作self def Help(self): '''Help doc''' # 方法的doc,引用语法 [类名|实例].方法名.__doc__ print('---base help begin---/n',self.name) # 在这儿引用类普通变量 print(CBase.__counter) # 即便是本类的方法引用自己的静态变量, # 也需要加类名或者self 限定 print(self.__private1) #私有变量只有本类方法有权限引用 print('---base help end---/n') def Test(self): print('Base Test') # 类的继承 # 可进行多重继承,语法class CC(CA,CB) class CHigh(CBase): def __init__(self): CBase.__init__(self,'high') # 调用基类的构造时,要手动传入第一个参数 print('__init__ high') def __del__(self): #CBase.__del__(self), 基类的析构函数是不能调用的 # 基类的析构的函数也不会被自动调用 print(' High destruct') # 继承类的方法会覆盖掉基类的同名方法 def Test(self): print('High Test ') # python没有方法重载的概念 # 源文件中最后一个定义的方法将会覆盖掉之前的同名方法 # 现在在调用Test,必须传递第二个参数name # 上面的具有一个参数的Test方法被覆盖掉了. def Test(self,name): print('High Test have arg:',name) rh = CHigh() #rh = CBase('hello') rh.Help() rh.Test(); print(CBase.counter) print(rh.name)