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

本文详细介绍了Python中用于获取对象属性、比较对象的方法,包括id()、dir()、type()、isinstance()和运算符重载。通过具体代码示例展示了如何使用这些内置函数了解对象状态和类型,以及在比较对象时应注意的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内置函数

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() 让我们知道变量的实际类型。

>>>>>> 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  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值