【问题标题】:How to get name of class in str type in python3?如何在python3中获取str类型的类名?
【发布时间】:2020-12-18 19:00:25
【问题描述】:

如果变量看起来像这样<_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'>,如何与类名字符串进行比较,那么我如何检查变量是否等于该对象?这就是我所做的,但失败了。

>>> a = open('/etc/passwd')
a
<_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'>
>>> type(a)
<class '_io.TextIOWrapper'>
>>> a.__class__
<class '_io.TextIOWrapper'>
>>> a.__class__ == 'io.TextIOWrapper'
False
>>> 

【问题讨论】:

    标签: python-3.x class object methods types


    【解决方案1】:

    您可以使用isinstance 方法进行检查

    >>> a = open('/etc/passwd')
    >>> import io
    >>> isinstance(a, io.TextIOWrapper)
    True
    

    如果您出于某种奇怪的原因绝对需要按字符串进行比较,您可以这样做:

    str(a.__class__) == "<class '_io.TextIOWrapper'>"
    

    但除非有非常好的理由这样做,否则绝不应该这样做。

    【讨论】:

    • 感谢您的回答,顺便说一句,我发现a.__class__.__name__ == '_io.TextIOWrapper' 有效。您可以将其包含在您的答案中@seven_seas
    • 对不起:a.__class__.__name__ == 'TextIOWrapper'
    猜你喜欢
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    相关资源
    最近更新 更多