您的位置:首页 > 编程语言 > Python开发

Python 笔记 : 类和继承

2011-04-21 15:43 387 查看
# -*- 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: