标签: isinstance

Python检查isinstance列表中的任何类型?

我怎么做pythonicly:

var = 7.0
var_is_good = isinstance(var, classinfo1) or isinstance(var, classinfo2) or isinstance(var, classinfo3) or ... or  isinstance(var, classinfoN)
Run Code Online (Sandbox Code Playgroud)

看起来很傻我不能只传入classinfo的列表:

var_is_good = isinstanceofany( var, [classinfo1, classinfo2, ... , classinfoN] )
Run Code Online (Sandbox Code Playgroud)

那么isinstanceofany功能是什么?

python types isinstance

56
推荐指数
4
解决办法
2万
查看次数

PHP检查DateTime的实例?

在我的DateTime类中,这是检查对象是否是类的实例的唯一方法吗?

$cls = ReflectionClass("DateTime");
if (! $cls->isInstance( (object) $var ) ) {
    // is not an instance
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎有点沉重.

php class instanceof instance isinstance

48
推荐指数
4
解决办法
5万
查看次数

将多个 isinstance 检查转换为结构模式匹配

我想转换此现有代码以使用模式匹配:

if isinstance(x, int):
    pass
elif isinstance(x, str):
    x = int(x)
elif isinstance(x, (float, Decimal)):
    x = round(x)
else:
    raise TypeError('Unsupported type')
Run Code Online (Sandbox Code Playgroud)

如何使用模式匹配编写检查,以及如何同时isinstance测试多种可能的类型?(float, Decimal)

python isinstance python-3.10 structural-pattern-matching

38
推荐指数
1
解决办法
1万
查看次数

36
推荐指数
3
解决办法
1万
查看次数

python使用isinstance比较boolean和int

有人可以给我一个解释,为什么isinstance()在下列情况下返回True?编写代码时,我期待False.

print isinstance(True, (float, int))
True
Run Code Online (Sandbox Code Playgroud)

我的猜测是它的python的内部子类,如0和1 - wheter float或int - 在用作布尔值时都会计算,但不知道确切的原因.

什么是解决这种情况的最pythonic方式?我可以使用,type()但在大多数情况下,这被认为是较少pythonic.

python int comparison boolean isinstance

28
推荐指数
4
解决办法
1万
查看次数

类型注释中的 collections.Iterable 与 typing.Iterable 和检查 Iterable

我发现,在Python都collections.Iterabletyping.Iterable在类型注释,并检查对象是否是迭代的,即可以使用,无论是isinstance(obj, collections.Iterable)isinstance(obj, typing.Iterable)作品。我的问题是,它们之间有什么区别?在哪些情况下更喜欢哪一个?

python types annotations iterable isinstance

26
推荐指数
1
解决办法
7125
查看次数

检查注释是否属于特定类型

我使用反射来看看是否被连接到一个类的属性的注释,是一种特定类型的.目前我在做:

if("javax.validation.Valid".equals(annotation.annotationType().getName())) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

这让我觉得有点笨拙,因为它依赖于一个完全限定的类名字符串.如果命名空间将来发生更改,则可能会导致细微错误.

我想要做:

if(Class.forName(annotation.annotationType().getName()).isInstance(
     new javax.validation.Valid()
)) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

但它javax.validation.Valid是一个抽象类,无法实例化.有没有办法模拟instanceof(或基本上使用isInstance)对接口或抽象类?

java reflection annotations instanceof isinstance

17
推荐指数
4
解决办法
2万
查看次数

Python:为什么isinstance返回False,什么时候应该返回True?

我目前在pdb trace中想出这个

ipdb> isinstance(var, Type)
False
ipdb> type(var)
<class 'module.Type'>
ipdb> Type
<class 'module.Type'>
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

PS 按预期isinstance(var, type(var))返回True

python isinstance

17
推荐指数
2
解决办法
1万
查看次数

Python中isinstance()的否定形式

我如何使用Python的负面形式isinstance()?

通常否定会起作用

x != 1

if x not in y

if not a
Run Code Online (Sandbox Code Playgroud)

我只是没有看到isinstance()的一个例子,所以我想知道是否有一个正确的方法来使用isinstance()的否定.

python negation negate isinstance

17
推荐指数
3
解决办法
2万
查看次数

python isinstance vs hasattr vs try/except:什么更好?

我试图找出确定是否obj可以执行操作的对象的不同方法之间的权衡do_stuff().据我了解,有三种方法可以确定这是否可行:

# Way 1
if isinstance(obj, Foo):
    obj.do_stuff()

# Way 2
if hasattr(obj, 'do_stuff'):
    obj.do_stuff()

# Way 3
try:
    obj.do_stuff()
except:
    print 'Do something else'
Run Code Online (Sandbox Code Playgroud)

哪种方法首选(以及为什么)?

python attributes exception-handling isinstance

14
推荐指数
3
解决办法
4413
查看次数