获取属性函数python python 获取属性( 五 )


这个方法是dir()的扩展版 , 它会将dir()找到的名字对应的属性一并返回,形如[(name, value), ...] 。另外 , predicate是一个方法的引用 , 如果指定,则应当接受value作为参数并返回一个布尔值 , 如果为False,相应的属性将不会返回 。使用is*作为第二个参数可以过滤出指定类型的属性 。
getmodule(object):
还在为第2节中的__module__属性只返回字符串而遗憾吗?这个方法一定可以满足你 , 它返回object的定义所在的模块对象 。
get{file|sourcefile}(object):
获取object的定义所在的模块的文件名|源代码文件名(如果没有则返回None) 。用于内建的对象(内建模块、类、函数、方法)上时会抛出TypeError异常 。
get{source|sourcelines}(object):
获取object的定义的源代码,以字符串|字符串列表返回 。代码无法访问时会抛出IOError异常 。只能用于module/class/function/method/code/frame/traceack对象 。
getargspec(func):
仅用于方法 , 获取方法声明的参数 , 返回元组,分别是(普通参数名的列表, *参数名, **参数名, 默认值元组) 。如果没有值,将是空列表和3个None 。如果是2.6以上版本 , 将返回一个命名元组(Named Tuple) , 即除了索引外还可以使用属性名访问元组中的元素 。
def add(x, y=1, *z):
return x + y + sum(z)
print inspect.getargspec(add)
#ArgSpec(args=['x', 'y'], varargs='z', keywords=None, defaults=(1,))
getargvalues(frame):
仅用于栈?。袢≌恢≈斜4娴母么魏饔玫牟问? ,返回元组,分别是(普通参数名的列表, *参数名, **参数名, 帧的locals()) 。如果是2.6以上版本,将返回一个命名元组(Named Tuple) , 即除了索引外还可以使用属性名访问元组中的元素 。
def add(x, y=1, *z):
print inspect.getargvalues(inspect.currentframe())
return x + y + sum(z)
add(2)
#ArgInfo(args=['x', 'y'], varargs='z', keywords=None, locals={'y': 1, 'x': 2, 'z': ()})
getcallargs(func[, *args][, **kwds]):
返回使用args和kwds调用该方法时各参数对应的值的字典 。这个方法仅在2.7版本中才有 。
getmro(cls):
返回一个类型元组,查找类属性时按照这个元组中的顺序 。如果是新式类 , 与cls.__mro__结果一样 。但旧式类没有__mro__这个属性,直接使用这个属性会报异常 , 所以这个方法还是有它的价值的 。
print inspect.getmro(Cat)
#(class '__main__.Cat', type 'object')
print Cat.__mro__
#(class '__main__.Cat', type 'object')
python内置函数有哪些python常见的内置函数有:
1. abs()函数返回数字的绝对值 。
2. all() 函数用于判断给定的参数中的所有元素是否都为 TRUE , 如果是返回 True,否则返回 False 。元素除了是 0、空、None、False 外都算 True;空元组、空列表返回值为True 。
3.any() 函数用于判断给定的参数是否全部为False,是则返回False,如果有一个为True,则返回True 。元素除了是 0、空、False外都算 TRUE 。
4. bin()函数返回一个整数int或者长整数long int的二进制表示 。
5. bool() 函数用于将给定参数转换为布尔类型,如果参数不为空或不为0,返回True;参数为0或没有参数,返回False 。
6. bytearray()方法返回一个新字节数组 。这个数组里的元素是可变的,并且每个元素的值范围: 0 = x256(即0-255) 。即bytearray()是可修改的二进制字节格式 。
7. callable()函数用于检查一个对象是否可调用的 。对于函数、方法、lambda函式、类以及实现了 __call__ 方法的类实例, 它都返回 True 。(可以加括号的都可以调用)

推荐阅读