ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flask-jinja

2022-07-29 06:00:27  阅读:157  来源: 互联网

标签:__ .__ jinja Flask __.__ bases class 属性


SSTI 中常用的魔术方法

__class__:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。 `__class__` 是类的一个内置属性,表示类的类型,返回 `<type 'type'>` ; 也是类的实例的属性,表示实例对象的类。

 ''.__class__
<type 'str'>   字符串
 ().__class__
<type 'tuple'> 元组
 [].__class__
<type 'list'>  列表
 {}.__class__
<type 'dict'>  字典

__bases__:用来查看类的基类,也可以使用数组索引来查看特定位置的值。 通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组(虽然只有一个元素)。注意是直接父类!!!

 ().__class__.__bases__
(<type 'object'>,)
 ''.__class__.__bases__
(<type 'basestring'>,)
 [].__class__.__bases__
(<type 'object'>,)
 {}.__class__.__bases__
(<type 'object'>,)
 ''.__class__.__bases__[0].__bases__[0]   // python2下雨python3下不同
<type 'object'>

 [].__class__.__bases__[0]
<type 'object'>

除此之外,我们还可以利用 __base__ 方法获取直接基类:

"".__class__.__base__
<type 'basestring'>

有这些类继承的方法,我们就可以从任何一个变量,回溯到最顶层基类(`<class'object'>`)中去,再获得到此基类所有实现的类,就可以获得到很多的类和方法了。

__subclasses__():查看当前类的子类组成的列表,即返回基类object的子类。

[].__class__.__bases__[0].__subclasses__()
[<type 'type'>, <type 'weakref'>, <type 'weakcallableproxy'>, <type 'weakproxy'>,
<type 'int'>, <type 'basestring'>, <type 'bytearray'>, <type 'list'>, 
<type 'NoneType'>, <type 'NotImplementedType'>, <type 'traceback'>, <type 'super'>, 
<type 'xrange'>, <type 'dict'>, <type 'set'>, <type 'slice'>, <type 'staticmethod'>, 
<type 'complex'>, <type 'float'>, <type 'buffer'>, <type 'long'>, <type 'frozenset'>, 
<type 'property'>, <type 'memoryview'>, <type 'tuple'>, <type 'enumerate'>, 
<type 'reversed'>, <type 'code'>, <type 'frame'>, <type 'builtin_function_or_method'>, 
<type 'instancemethod'>, <type 'function'>, <type 'classobj'>, <type 'dictproxy'>, 
<type 'generator'>, <type 'getset_descriptor'>, <type 'wrapper_descriptor'>, 
<type 'instance'>, <type 'ellipsis'>, <type 'member_descriptor'>, <type 'file'>, 
<type 'PyCapsule'>, <type 'cell'>, <type 'callable-iterator'>, <type 'iterator'>, 
<type 'sys.long_info'>, <type 'sys.float_info'>, <type 'EncodingMap'>, 
<type 'fieldnameiterator'>, <type 'formatteriterator'>, <type 'sys.version_info'>, 
<type 'sys.flags'>, <type 'sys.getwindowsversion'>, <type 'exceptions.BaseException'>, 
<type 'module'>, <type 'imp.NullImporter'>, <type 'zipimport.zipimporter'>, 
<type 'nt.stat_result'>, <type 'nt.statvfs_result'>, <class 'warnings.WarningMessage'>, 
<class 'warnings.catch_warnings'>, <class '_weakrefset._IterationGuard'>, 
<class '_weakrefset.WeakSet'>, <class '_abcoll.Hashable'>, <type 'classmethod'>, 
<class '_abcoll.Iterable'>, <class '_abcoll.Sized'>, <class '_abcoll.Container'>, 
<class '_abcoll.Callable'>, <type 'dict_keys'>, <type 'dict_items'>, 
<type 'dict_values'>, <class 'site._Printer'>, <class 'site._Helper'>, 
<type '_sre.SRE_Pattern'>, <type '_sre.SRE_Match'>, <type '_sre.SRE_Scanner'>, 
<class 'site.Quitter'>, <class 'codecs.IncrementalEncoder'>, 
<class 'codecs.IncrementalDecoder'>, <type 'operator.itemgetter'>, 
<type 'operator.attrgetter'>, <type 'operator.methodcaller'>, 
<type 'functools.partial'>, <type 'MultibyteCodec'>, <type 'MultibyteIncrementalEncoder'>, 
<type 'MultibyteIncrementalDecoder'>, <type 'MultibyteStreamReader'>, 
<type 'MultibyteStreamWriter'>]

__globals__:该方法会以字典的形式返回当前位置的所有全局变量,与 func_globals 等价。该属性是函数特有的属性,记录当前文件全局变量的值,如果某个文件调用了os、sys等库,但我们只能访问该文件某个函数或者某个对象,那么我们就可以利用globals属性访问全局的变量。该属性保存的是函数全局变量的字典引用。

 

标签:__,.__,jinja,Flask,__.__,bases,class,属性
来源: https://www.cnblogs.com/l0vehzzz/p/16530919.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有