WEB开发网
开发学院软件开发C语言 从C#到Python —— 4 类及面向对象 阅读

从C#到Python —— 4 类及面向对象

 2010-09-30 22:41:42 来源:WEB开发网   
核心提示: 而Python类的数据添加方法与C#有一些不同,因为Python是一种动态语言,从C#到Python —— 4 类及面向对象(2),变量在使用之前不需要定义,所以你可以不在类定义中添加成员变量,这类似C#中的非静态成员,那么如何在Python中定义与类的静态成员呢?这个很简单,而是在运行时动态地

而Python类的数据添加方法与C#有一些不同,因为Python是一种动态语言,变量在使用之前不需要定义,所以你可以不在类定义中添加成员变量,而是在运行时动态地添加它们,例如:

1 class A:pass
2 a = A()
3 a.x =1
4  print a.x

当然上述方法不是一种好方法,也很少有人真正这么用(虽然语法上没有任何错误),类的成员变量最好是在类的初始化函数里面声明并初始化。

4.2.2  初始化函数

Python的类提供了类似C#构造函数的东西:__init__(注意前后是两个下划线),类在实例化时会首先调用这个函数。我们可以通过重写 __init__函数,完成变量的初始化等工作。与C#不同的地方是,Python不支持无参数的初始化函数,你至少需要为初始化函数指定一个参数,即对象实例本身(self)。下面是一段简单的示例代码,在该代码中,我们重写了函数__init__,定义并初始化了一个类的成员变量 x:

1 class A:
2   def __init__(self):
3     self.x = 1
4 a = A()
5  print a.x

实际上Python允许在任何成员函数(不仅限于__init__)中声明类的成员变量,不过最好养成在初始化函数中声明成员变量的习惯。

另外,我们也可以定义带多个参数的初始化函数,如下:

1 class A:
2   def __init__(self,x):
3     self.x = x
4 a = A(1)
5  print a.x

当然,Python的类也有类似C#析构函数的东西:__del__函数,但不推荐使用它,Python的垃圾回收机制会帮你做好一切事情。

4.2.3  静态成员(类变量)

你可能已经注意到,在前面的代码中,成员变量x之前也有一个self,这说明该成员属于于类的实例(而不是类本身),这类似C#中的非静态成员。那么如何在Python中定义与类的静态成员呢?这个很简单,只需要在类定义中直接初始化一个变量即可,例如:

上一页  1 2 3 4 5 6 7  下一页

Tags:Python 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接