python魔法方法是什么魔方方法是Python的内置方法,无需主动调用,主要目的就是为了给Python的解释器进行调用,而且每个魔方方法都有一个对应的内置函数或运算符 , 接下来我们来看看具体的介绍 。
魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,你可以定义自己想要的行为,而这一切都是自动发 生的,它们经常是两个下划线包围来命名的(比如 __init___ , __len__ ),Python的魔法方法是非常强大的所以了解其使用方法也变得尤为重要!
__init__ 构造器,当一个实例被创建的时候初始化的方法,但是它并不是实例化调用的第一个方法 。
__new__ 才是实例化对象调用的第一个方法,它只取下cls参数,并把其他参数传给 __init___ 。
___new__ 很少使用,但是也有它适合的场景,尤其是当类继承自一个像元祖或者字符串这样不经常改变的类型的时候 。
__call__ 让一个类的实例像函数一样被调用 。
__getitem__ 定义获取容器中指定元素的行为,相当于self[key] 。
__getattr__ 定义当用户试图访问一个不存在属性的时候的行为 。
__setattr__ 定义当一个属性被设置的时候的行为 。
__getattribute___ 定义当一个属性被访问的时候的行为 。
Python 写一个方程magic_square(input_file)def magic_square(input_file):
import xlrd
data=https://www.04ip.com/post/xlrd.open_workbook(input_file)
sheet1=data.sheet_by_index(0)
i=0
result=[]
diag1=0
diag2=0
while i4:
row=sheet1.row_values(i)
col=sheet1.col_values(i)
add1=0
add2=0
for ele in range(0,len(row)):
add1=add1 row[ele]
add2=add2 row[ele]
result.append(add1)
result.append(add2)
diag1=diag1 row[i]
diag2=diag2 row[3-i]
i=i 1
result.append(diag1)
result.append(diag2)
result=set(result)
if len(result)1:
print('False')
else:
print('True')
注意格式,看下面这个图
Python魔法函数(特殊函数) Python中如何实现运算符的重载,即实现例如a b这样的运算符操作呢?
在C中可以使用 operator 关键字实现运算符的重载 。但是在Python中没有类似这样的关键字 , 所以要实现运算符的重载,就要用到Python的魔法函数 。Python魔法函数是以双下划线开头 , 双下划线结尾的一组函数 。我们在类定义中最常用到的 __init__ 函数就是这样一个魔法函数,它在创建类对象时被自动调用 。
下面我们来看个简单的例子 。
上述代码示例了几个魔法函数的用法 。__add__函数对应了二元运算符 ,当执行a b语句时,python就会自动调用a.add(b) 。对于上述例子中的v1 v2 v3,则相当于调用了(v1.add(v2)).add(v3) 。
代码中还有一个在Python类定义经常使用的__str__函数,当使用str()时会被调用 。print函数对传入的参数都调用了str()将其转换成易读的字符串形式,便于打印输出,因而会调用类定义的__str__函数打出自定义的字符串 。
代码中还有一个特殊的__call__函数 , 该函数在将对象采用函数调用方式使用时被调用, 例如v1()相当于v1.call() 。
以上就是魔法函数的基本使用方法 。常见的魔法函数我们可以使用dir()函数来查看 。
输出结果为:
上述结果中形式为‘__函数名__’的函数为魔法函数,注意有些对象也是这种形式,例如__class__, __module__等, 这些不是魔法函数 。具体的魔法函数说明可以参考Python官方说明文档 。
以上代码在Python3.6运行通过.
【python魔方函数 python 魔方】python魔方函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于python 魔方、python魔方函数的信息别忘了在本站进行查找喔 。
推荐阅读
- jquery遍历所有按钮,jquery遍历方法
- thinkphp企业源码下载,thinkphp源码安装教程
- 国际区块链发票,区块链 发票
- linux文件名长度命令 linux文件名长度不超过多少字符
- 如何利用网红效应带动营销,网红效应的弊端
- ps主机即时战斗的游戏,ps主机游戏推荐
- 真实道路驾驶模拟游戏视频,模拟道路驾驶的游戏
- mysql怎么存特殊字符 mysql 特殊字符的入库
- 鸿蒙软件安装时间,鸿蒙系统安装次数