Python深入学习笔记1-特殊方法与多范式

01、 特殊方法与多范式

Python一切皆对象,但同时,Python还是一个多范式语言(multi-paradigm),你不仅可以使用面向对象的方式来编写程序,还可以用面向过程的方式来编写相同功能的程序(还有函数式、声明式等,我们暂不深入)。Python的多范式依赖于Python对象中的特殊方法(special method)。

特殊方法名的前后各有两个下划线。特殊方法又被成为魔法方法(magic method),定义了许多Python语法和表达方式,正如我们在下面的例子中将要看到的。当对象中定义了特殊方法的时候,Python也会对它们有“特殊优待”。比如定义了__init__()方法的类,会在创建对象的时候自动执行__init__()方法中的操作。

(可以通过dir()来查看对象所拥有的特殊方法,比如dir(1))


  • 运算符
    举个例子:
a=(1.8).__mul__(2.0)
print(a)
b=True.__or__(False)
print(b)

输出:
3.6
True
此处的__mul__()与__or__()就相当于*和或运算,是对象自带的方法!


  • 内置函数
    与运算符类似,许多内置函数也都是调用对象的特殊方法。比如:
len([1,2,3])      # 返回表中元素的总数

实质上做的是:

[1,2,3].__len()__

又如:

(-1).__abs__()
(2.3).__int__()

  • 表(list)元素引用
    下面是我们常见的表元素引用方式
li=[1,2,3,4]
print(li[3])

上面的程序运行到li[3]的时候,Python发现并理解[]符号,然后调用__getitem__()方法。

li=[1,2,3,4]
print(li.__getitem__(3))
li.__setitem__(3,0)
print(li)

输出:
4
[1, 2, 3, 0]


  • 函数
    在Python中,函数也是一种对象。实际上,任何一个有__call__()特殊方法的对象都被当作是函数。比如下面的例子:
class SampleMore(object):
    def __call__(self, a):
        return a+5

add = SampleMore()
print(add(2))

add是SampleMore的一个对象,当被调用时,add执行加5操作

add还可以作为函数对象,被传递给map()函数。

re=list(map(add,[1,2,3]))
print(re)

:在python3中要看map后的列表要在map()前加上list()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值