0%

Python特殊属性

Python特殊属性

Python垃圾来学习一下python的各种奇怪方法,以后打SSTI或者pickle的时候不至于这么惨

__dict__

对类对象使用时,以字典形式返回类对象的全部属性,使用__dict__.update可以更新对象属性,任意更新,可以增加对象原本不存在的属性
对函数使用意义不大

__globals__

对函数使用时返回函数所在模块内的所有全局变量,隐约记得flask和Django好像可以用这个看secret key之类的奇怪属性,好像不能对类对象使用

sys.modules

sys记录的是python运行时的各类信息,sys.modules即python已经加载的模块,除了当前文件中显式import的内容,由于import的模块在实现时也会导入其他模块,所以其存在的模块远大于显式导入的模块
pickle反序列化时可用,用来摸一些奇怪的模块出来

__file__

对模块使用,返回模块所在的文件路径

builtins模块

是python的内置模块,不需要显式导入,在python启动时就进行自动加载,存在一些比较有意思的属性
比如超级万金油getattr,让你从任意未加载模块中获取内容
其中的内置数据类型dict可以获得其get方法,就能从globals或者modules之类的地方get一个东西出来
builtins.globals为当前环境上下文,可以从这里面又获取一堆东西
builtins里面直接有eval,不过python的eval和和PHP之类的语言的eval存在一定出入,总感觉不能直接命令执行?

主要是也不知道还有啥,遇到的时候又都记不住了,先记这么一点点

参考链接

https://segmentfault.com/a/1190000005685090
https://www.cnblogs.com/jessonluo/p/4752349.html