问题标签 [isinstance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在python中,是否有一个静态等价于isinstance?
我想扫描一个模块(使用dir()
)并提取type
扩展某个父类的类的所有类名(对象)。有没有办法在不首先创建我可以检查的实例的情况下做到这一点isinstance()
?
python - 处理 id 和数据库行的异构列表的 pythonic 方式是什么
我的情况是我正在编写一个允许用户从数据库中删除记录的函数。为了提高效率,函数本身必须能够获取用于批量删除的参数列表。此外,为简单起见,该列表可以包含 ID(可以是strings
或ints
)或行对象(被荣耀dicts
)
如果您好奇,允许完整行背后的原因是存在检查行数据的安全检查,以确保允许用户删除有问题的行。允许传入行可以减少访问数据库的次数。
isinstance
目前,我通过以下方式使用经常受到批评的功能:
我可以看到为什么这是危险的(如果可以将类型强制转换为不是int
or的 idbasestring
怎么办?),但是对于不以某种方式涉及 isinstance 的更清洁的解决方案,我感到茫然,或依赖可能与我的实际代码相关或不相关的异常。
问题是,在 python 中执行此操作的最有效方法是什么?或者,或者,对调用者这么多只是一个灾难的秘诀,即我应该只要求参数是强制到一个int
或行列表的类型列表?
python - isinstance 行为与模块重新加载
给定以下两个 .py 文件:
类.py
主文件
在这个阶段,一切正常(我的程序打印True\nTrue
)但是如果我修改importer
方法以强制重新加载,即:
这一行:
替换为:
我的程序返回
而且我不理解这种行为。
python - Python:在基于 C 的类型 MatchObject 上使用 isinstance
我正在研究一个函数,我想知道一个对象是否是re.MatchObject
. 我尝试使用isinstance
,但re.MatchObject
它是 C 类型,这不起作用。
hasattr( ... , 'pos')
我仍然可以进行类似或任何其他属性的替代测试re.MatchObject
,但我不认为它是一个好的解决方案。还有什么办法吗?
python - 是否可以让 isinstance 或类似的类型检查与我的腌制类一起使用?
我有一个非常烦人的错误,我终于找到了它。
我使用(或更准确地说,已经使用过)一个独立的脚本来创建对象存储,然后我腌制这个数据结构。然后,我可以在每次程序运行时使用反序列化数据初始化我的主程序。
但是,如果我使用类型检查,这将成为一个问题。在我做 pickle.dump() 并得到这个数据结构之后,我设置了它,以便我尝试检查一个对象的类型。不幸的是,我唯一可以检查的就是重新加载我的类,Python 认为这是不同的。
调试:对象我正在检查类型:>> Fixture {name: 'Front Desk', location: '0', desc: 'The front desk has a sign that read...'} <<
DEBUG: A generic GameObject: >> 游戏对象 {name: '', location: 'None', desc: '...' } <<
(您可以看到对象表示看起来非常相似。这是因为一个继承__repr__
自另一个,即应该是它的一个实例。)
调试:我正在类型检查的对象类型:{class 'chimai.chimai.objects.fix.Fixture'}
调试:通用游戏对象的类型:{class 'objects.game_object.GameObject'}
调试:对象 I'的 MRO m 类型检查:({class 'chimai.chimai.objects.fix.Fixture'}, {class 'chimai.chimai.objects.game_object.GameObject'}, {type 'object'})
调试:通用游戏对象的 MRO : ({class 'objects.game_object.GameObject'}, {type 'object'})
(GameObject 类的标识符略有不同;这来自我最初运行独立脚本的位置。)
调试:腌制夹具类型的 ID:173671604
调试:在我的主程序中重新加载的夹具类型的 ID:149507748
最终结果是,我根本想不出一种方法来对我的腌制数据进行类型检查。除非有人有任何天才的建议,否则我想我会是鸭子打字。
python - 在python中读取和解析文件内容
我有一个文件,其中包含以下格式的条目:
FID
在读取文件时找出是字符串、元组还是列表的最佳方法是什么?
读取后立即对 FID 的值进行正常isinstance
测试是行不通的。感谢任何帮助。
python - isinstance 不导入候选人
我们有一个函数,它接受各种不同类型的输入:一个函数、一个字符串、一个编译的正则表达式、一个Hamcrest 匹配器,并根据输入的类型适当地过滤一个列表。
我们目前正在使用isinstance(our_filter, hamcrest.matcher.Matcher)
,但这需要我们安装 Hamcrest。
我们正在考虑在inspect.getmro(type(POSSIBLE_MATCHER))
;上使用字符串匹配。但这感觉不干净。在 import 语句周围可能还有带有try
/的选项。except
最好的方法是什么?
在@dblslash 的帮助下,这是迄今为止我得到的最好的:
[x.__module__+"."+x.__name__ for x in inspect.getmro(type(POSSIBLE_MATCHER))]
['hamcrest.core.core.isequal.IsEqual', 'hamcrest.core.base_matcher.BaseMatcher', 'hamcrest.core.matcher.Matcher', 'hamcrest.core.selfdescribing.SelfDescribing', '__builtin__.object']
python - python 2.7 isinstance 在动态导入的模块类中失败
我目前正在编写某种微型 api 来支持扩展模块类。用户应该能够在配置中写入他们的类名,然后在我们的程序中使用它。约定是,类的模块有一个调用函数create(**kwargs)
来返回我们的基本模块类的实例,并放置在一个特殊的文件夹中。但是,一旦动态进行导入,isinstance 检查就会失败。
模块放置在 lib/services/名称中
模块基类(在 lib/services/service 中)
示例模块类(在 lib/services/ping 中)
导入功能
调用代码
我到底做错了什么
这是一个压缩的小示例,只需提取并运行test.py
不带参数
zip 示例
eclipse - 当变量类型未知时,pydev(eclipse)中的代码完成
对于类型未知的变量(不在运行时),对于 codecomplete,以下语句正在工作
断言 isinstance(variable, class) 变量。{codecomplete 作品}
而下面的语句不是
断言 isinstance(self.variable, class) self.variable。{代码完成不工作}
如何使 codecomplete 与“self.*”变量一起工作?
python - python枕头(更好的PIL)编码检查错误
我刚刚在我的 virtualenv 中安装了一个 Pillow 包。这样做:
我收到一个错误:
事实上,如果你查看官方 gihub 存储库(https://github.com/python-imaging/Pillow/blob/master/PIL/ImageFont.py#L264),你可以看到这个结构:
我的问题是:如何用实际有效的东西替换它?