Python一切皆对象,但同时,Python还是一个多范式语言(multi-paradigm),你不仅可以使用面向对象的方式来编写程序,还可以用面向过程的方式来编写相同功能的程序(还有函数式、声明式等,我们暂不深入)。Python的多范式依赖于Python对象中的特殊方法(special method)。
特殊方法名的前后各有两个下划线。特殊方法又被成为魔法方法(magic method),定义了许多Python语法和表达方式,正如我们在下面的例子中将要看到的。当对象中定义了特殊方法的时候,Python也会对它们有"特殊优待"。比如定义了init()方法的类,会在创建对象的时候自动执行init()方法中的操作。
(可以通过dir()来查看对象所拥有的特殊方法,比如dir(1))
运算符
Python的运算符是通过调用对象的特殊方法实现的。比如:
复制代码 代码如下:
'abc' + 'xyz' # 连接字符串
实际执行了如下操作:
复制代码 代码如下:
'abc'.add('xyz')
所以,在Python中,两个对象是否能进行加法运算,首先就要看相应的对象是否有add()方法。一旦相应的对象有add()方法,即使这个对象从数学上不可加,我们都可以用加法的形式,来表达obj.add()所定义的操作。在Python中,运算符起到简化书写的功能,但它依靠特殊方法实现。
Python不强制用户使用面向对象的编程方法。用户可以选择自己喜欢的使用方式(比如选择使用+符号,还是使用更加面向对象的add()方法)。特殊方法写起来总是要更费事一点。
尝试下面的操作,看看效果,再想想它的对应运算符
复制代码 代码如下:
(1.8).mul(2.0)
True.or(False)
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8