从C#到Python —— 4 类及面向对象
2010-09-30 22:41:42 来源:WEB开发网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中,运算符重载的方式更为简单——每一个类都默认内置了所有可能的运算符方法,只要重写这个方法,就可以实现针对该运算符的重载。例如以下是重载加法操作:
更多精彩
赞助商链接