【问题标题】:How do I check if a variable is type list if I already have list defined as a variable? [duplicate]如果我已经将列表定义为变量,如何检查变量是否为列表类型? [复制]
【发布时间】:2020-06-26 14:44:13
【问题描述】:

正如标题所说,不幸的是,我正在开发的平台迫使我将“列表”定义为变量名。此外,type 是一个内置的变量名。考虑到这个系统中使用的服务器端语言是 Python,这是一个非常糟糕的疏忽!我需要确定变量是否属于列表类型。通常,我显然会使用

isinstance(q, list)

type(q) == list

我不太确定如何做到这一点。尽管我在 Java 和 Javascript/jquery 方面拥有丰富的经验,但我对 Python 还是比较陌生。有什么想法吗?

【问题讨论】:

  • type(a) == type([])
  • isinstance(q, [].__class__)。假设您正在使用的这个疯狂平台不会突然决定将isinstance 定义为变量...
  • 哈哈!好的,非常感谢,我会试一试,我很感激!
  • 那行不通。它说“class 是一个无效的属性名称,因为它以 _ 开头”
  • 什么,确切地说,__class__ 是一个无效的属性名称?

标签: python typing


【解决方案1】:

首先我不知道什么样的平台会使用像list这样的保留关键字作为变量名,但您可以通过以下方式轻松进行比较

type(q) == type([])

编辑:当我在写答案时,@Justin 已经在 cmets 中回答了。

【讨论】:

    【解决方案2】:

    如果您隐藏名称,也可以通过 builtins 模块获得内置名称。

    >>> import builtins
    >>> builtins.list is list
    True
    >>> list = 3
    >>> builtins.list is list
    False
    >>> builtins.list("abc")
    ['a', 'b', 'c']
    >>> del list
    >>> builtins.list is list
    True
    

    该模块也可以在不使用内置名称__builtins__ 显式导入的情况下使用。

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多