您的位置:首页 > 编程语言 > Python开发

python特殊函数(id, dir, type, isinstance, issubclass, is)

2015-06-22 22:51 906 查看
内置函数
id()如果我们能获取对象(变量、方法或类型实例)的 "内存地址" 对于我们了解引用机制还是非常不错的。

id() 返回一个对象的 "唯一序号",转换成 16 进制就是所谓的内存地址了,为了图方便后面直接使用 id(),不再转换成 16 进制。

>>>>>> def Foo():
pass  >>>>>> Foo
<function Foo at 0x00DC6EB0>
>>>>>> hex(id(Foo))
'0xdc6eb0'
>>>>>>

dir()方法 dir() 能帮我们了解对象包含哪些成员。

>>>>>> dir(Foo)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
>>>>>>

type()type() 让我们知道变量的实际类型。
[code]>>>>>> type(Foo)
<type 'function'>
>>>>>>
isinstance()isinstance() 可以确认某个变量是否某种类型。
>>>>>> s = "Xwy2.com"
>>>>>> isinstance(s, str)
True
>>>>>>
issubclass()该函数可以判断继承关系。
>>>>>> issubclass(int,object)
True
>>>>>>
is多数情况下,我们可以直接使用 "==" 来判断两个对象是否相等。但 Python 同样支持运算符重载,因此使用 is 来代替应该更安全一点(C# 中经典的 Equals 问题)。
>>>>>> class MyClass:
def __ini__(Self):
self.x = 123
def __eq__(self, o):
return self.x == o.x
>>>>>> a = MyClass()
>>>>>> b = MyClass()
>>>>>> print hex(id(a))
0xdcea80
>>>>>> print hex(id(b))
0xdc4b98
>>>>>> print a == b
true
>>>>>> print a is b
false

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: