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

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

 2010-09-30 22:41:42 来源:WEB开发网   
核心提示: 1classA:2@staticmethod3defprt():4print"MyNameisA"56A.prt()如你所见,静态方法可以直接被类调用,从C#到Python —— 4 类及面向对象(5),它没有常规方法那样的特殊行为(默认的第一个参数是self等),你完全可以

1 class A:
2  @staticmethod
3  def prt():
4    print "My Name is A"
5 
6 A.prt()

如你所见,静态方法可以直接被类调用,它没有常规方法那样的特殊行为(默认的第一个参数是self等),你完全可以将静态方法当成一个用属性引用方式调用的普通函数。任何时候定义静态方法都不是必须的,静态方法能实现的功能都可以通过定义一个普通函数来实现。一般认为,当有一堆函数仅仅为某一特定类编写时,将这些函数包装成静态这种方式可以提供使用上的一致性。(以上修改自《Python精要参考》)

4.3.3  方法重载

在C#中,同一个类中的两个或多个方法可以共享相同的名称,只要它们的参数(数量或类型)不同即可,这种过程被称为方法重载(Method overloading),方法重载是C#实现多态特性的方式之一。

很不幸,Python不支持同名方式的方法重载,虽然你可以在类中定义多个同名的方法,但前边定义的方法会被后边定义的所覆盖(Python使用名字来绑定一个对象)。但Python作为面向对象语言,自然不会丢掉方法重载这个面向对象的重要特性。

如前所述,C#重载方法的主要方式是定义不同类型或数量的参数。由于Python本身是动态语言,方法的参数是没有类型的,当调用传值的时候才确定参数的类型,故对参数类型不同的方法无需考虑重载。对参数数量不同的方法,则(大多数情况下)可以采用参数默认值来实现,具体内容就不再重复介绍了,可以参考上一章《函数及函数编程》。

4.3.4  运算符重载

运算符重载是实现多态的另外一种重要手段。在C#中,我们通过使用关键字operator定义一个运算符方法,并定义与所在类相关的运算符行为。在 Python中,运算符重载的方式更为简单——每一个类都默认内置了所有可能的运算符方法,只要重写这个方法,就可以实现针对该运算符的重载。例如以下是重载加法操作:

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

Tags:Python 面向 对象

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