从C#到Python —— 4 类及面向对象
2010-09-30 22:41:42 来源:WEB开发网核心提示: 但实际上我们还是可以不受限制地访问这个“私有”成员,只需要在变量名(或方法名)前加下划线和类名称,从C#到Python —— 4 类及面向对象(4),如:1printa._A__x2#输出1我认为Python应该彻底封掉这个口子,支持真正的私有成员,请注意): 1clas
但实际上我们还是可以不受限制地访问这个“私有”成员,只需要在变量名(或方法名)前加下划线和类名称,如:
1 print a._A__x
2 #输出 1
我认为Python应该彻底封掉这个口子,支持真正的私有成员,这样才符合面向对象编程中“封装”的基本思想。
4.3 类的方法4.3.1 为类添加方法
方法是对类数据内容的操作,在Python中,定义类的方法与定义一个普通的函数在语法上基本相同(见上一章《函数及函数编程》)。C#程序员需要注意的是,在类中定义的常规方法的第一个参数总是该类的实例,即self。同时注意在方法中引用类的另一个方法必须使用类名加方法名的形式,下面是一个定义类方法的简单例子:
1 class A:
2 def prt(self):
3 print "My Name is A"
4 def reprt(self):
5 prt(self) #错误,NameError: global name 'prt' is not defined
6 A.prt(self) #正确
7 a = A()
8 a.prt()
9 a.reprt()
不能定义一个不操作实例的方法(这点在开始时经常会被忘记,请注意):
1 class A:
2 def prt():
3 print "My Name is A"
4
5 a = A()
6 a.prt()
7 #TypeError: prt() takes no arguments (1 given)
4.3.2 静态方法
Python与C#一样支持静态方法。在C#中需要使用关键字static声明一个静态方法,而在Python中是通过静态方法修饰符@staticmethod来实现的,下面是示例代码:
更多精彩
赞助商链接