什么是魔法函数
以双下划线开头,以双下划线结尾。
class studen:
def __init__(self,studentname):
self.studentname = studentname
def __getitem__(self, item):
return self.studentname[item]
my_Student = studen(['se10rc','Cloud1','test'])
for s in my_Student:
print(s)
上述代码直接调用getitem这个魔法函数,遍历输出。
魔法方法由python定义好,自己不能去创建,它不属于任何东西。
魔法函数一览
非数学类运算
字符串表示
1.repr(self):(开发模式下的字符串格式化)
2.str(self):(正常模式下的字符串格式化)
class studen:
def __init__(self,studentname):
self.studentname = studentname
def __str__(self):
return ','.join(self.studentname)
my_Student = studen(['se10rc','Cloud1','test'])
print(my_Student)
>>> se10rc,Cloud1,test
还有很多,之后遇到了在讲。。。
web安全方向ssti模版注入中常用
bases
以元组返回一个类直接所继承的类
mro
以元组返回继承关系链
class
返回对象所属的类
globals
以dict返回函数所在模块命名空间中的所有变量
subclasses()
以列表返回类的子类
builtin
内建函数,python中可以直接运行一些函数,例如int(),list()等等,这些函数可以在builtins中可以查到。查看的方法是dir(builtins)
ps:在py3中builtin被换成了builtin
builtin 和 builtins之间是什么关系呢?
在主模块main中,builtins是对内建模块builtin本身的引用,即builtins完全等价于builtin,二者完全是一个东西,不分彼此。
非主模块main中,builtins仅是对builtin.dict的引用,而非builtin本身
写在最后
今天的效率有点高,但是常见魔法函数还有很多没不知道他的用法,自己也不是主要走开发方向,大致了解就行了到时候不会在面向google编程吧,就这样,拜拜!👋。