TEL:400-8793-956
当前位置:程序、服务器

为什么在Python判断变量类型时不推荐type方法

提问者:网民 近期获赞:21 浏览人数:422 发布时间:2020-12-09 09:54:11

 问:使用类型()的方法判断变量,结果是鄙视了那只老鸟,我不知道为什么。

请您解释:问题出在哪里,如何判断变量的类型是个好方法?
 
>>> n = 911
>>>类型(n)
<类型'int'>
>>> type(n)是int
真正
 
答:实际上,还有另一种使用isinstance的方法,
例如:
 
a = 111
isinstance(a,int)
真正
isinstance和type之间的区别在于:
 
A类:
    通过
 
B(A)级:
    通过
 
isinstance(A(),A)#返回True
type(A())== A#返回True
isinstance(B(),A)#返回True
type(B())== A#返回False
区别在于子类之类的类型不再起作用。您是说那只老鸟吗?
 
 
答:它与Python的新型类有关。相关链接http://www.python.org/doc/newstyle/以下代码在Python 2.5中执行:
 
>>> A类:
...通过
... 
>>> a = A()
>>> B类:
...通过
... 
>>> b = B()
>>>类型(a)是类型(b)
真正
>>>
在老式类中,任意实例type都是“实例”。因此绝对不可能按类型来判断其类型。此外,此问题与Python的想法有关。通常,您不应编写代码来检查
 
类型,而应直接假定正在操作的实例具有所需的属性,否则将引发异常。即使需要检查类型,也应该使用isinstanceJudge,因此您希望subclass它
 
的类型也可以正常处理(例如,需要处理函数)Message类型,那么它应该能够处理Message子类型,MyMessage因此应使用isinstance(arg,Message)
 
判断这个,而不是由这个type(arg) == Message来判断),
请参阅鸭打字http://en.wikipedia.org/wiki/Duck_typ… ;此外,此问题也与“metaclass关于它”相关,但我真的不记得它会导致什么。type()未
 
返回type此类是实例。要添加的…更新:
查找另一个示例供您参考。
 
Python 2.7.3(默认,2012年5月12日,00:10:31) 
达尔文[GCC 4.2.1(Gentoo 4.2.1_p5666,Apple Inc. build 5666)(第3点)]
键入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
>>>从集合导入迭代器
>>> A类(对象):
... def __iter __(自己):
...通过
... def next(self):
...通过
... 
>>> isinstance(A(),迭代器)
真正
 
 
答:强烈建议使用isinstance()代替type()。以下两个示例说明了为什么不使用type(),如果您对它不满意,可以继续。
 
http://www.chenxm.cc/post/429… ;
 
Code sample 2:
import typesclass UserInt(int):
    def __init__(self, val=0):
        self.val = int(val)
 
i = 1n = UserInt(2)
print(type(i) is type(n))    # False
这意味着I和N的类型不同,并且实际上UserInt继承自int,因此这种判断是有问题的。当我们扩展Python内置类型时,该类型返回错误的结果。这意
 
味着I和N的类型不同,并且实际上UserInt继承自int,因此这种判断是有问题的。当我们扩展Python内置类型时,该类型返回错误的结果。
代码示例3:
 
class A():
    pass
    
class B():
    pass
    
a = A()
b = B()
 
print(type(a) is type(b))    # True
类型比较的结果与类型A和b相同,并且结果显然不准确。例如,此经典类的类型返回相同的结果,这不是我们想要的结果。对于内置的基本类型,可
 
以使用tpye进行检查,但是当应用于其他情况时,类型似乎不可靠。
上一篇: PHP开发中应避免哪些不良编程习惯
下一篇: 如何提高比较大量字符串的速度
城市网站导航:无锡网站建设 徐州企业网站定制 常州网站开发哪家好 苏州网站改版 南通网站开发 连云港网站建设 淮安网站建设公司 盐城网站定制 扬州网站改版公司 镇江网站开发 泰州高端网站制作 宿迁高端网站开发 江阴高端网站开发 宜兴建设网站 新沂建设网站 邳州建设网站 常熟建设网站 张家港网站改版 昆山公司网站开发 太仓高端网站制作 丹阳高端网站制作 句容专业建站 泰兴网站制作公司 合肥网站建设 芜湖网站制作 蚌埠网站建设 淮南网站制作哪家好 马鞍山网站建设 铜陵网站制作公司 安庆网站建设公司 黄山网站制作 滁州网站建设 阜阳网站设计 六安网站建设 亳州网站制作 宣城网站建设 巢湖网站建设哪家好 桐城网站制作 天长网站建设 明光网站建设 全椒网站建设 扬中网站建设公司 城市小程序导航: