标签: isinstance

is the "is" operator just syntactic sugar for the "IsInstanceOfType" method

Are the following code snippets equivalent?

class a
{}

class b:a
{}

b foo=new b();
Run Code Online (Sandbox Code Playgroud)

//here it comes

foo is a
Run Code Online (Sandbox Code Playgroud)

//...is the same as...

typeof(a).isinstanceoftype(foo)
Run Code Online (Sandbox Code Playgroud)

或者也许其中一个其他类型方法映射更接近于运算符.例如"IsAssignableFrom"或"IsSubclassOf"

c# types keyword isinstance

5
推荐指数
2
解决办法
1301
查看次数

没有isinstance()的列表列表的递归

我刚读过"isinstance()被认为是有害的",这似乎是合理的.简而言之,它主张避免使用这个功能.

好吧,刚才我正在编写一个程序,它将输入结构化为树,并且需要树的结构信息.没有时间实现GUI,我强加给用户将其写入配置文件(我知道这是一个糟糕的接口,但时间表非常紧张).我的用户非常技术,但不一定知道python.我选择该文件将包含表示输入树的列表(列表列表等)列表,最终元素是树的叶节点.我认为这比在用户上强加字典的合成更好.

我计划递归地解析列表如下(省略树的结构的使用,让我们简化并说必须在每个叶节点上调用treatLeafNode()):

def parseTree(input):
    if isinstance (input, list):
        for item in input:
            parseTree(item)
    else:
        treatLeafNode(item)
Run Code Online (Sandbox Code Playgroud)

根据这篇文章,我想知道是否有一种简单的方法来解决这个问题,而不使用isinstance()......

有人知道吗?

python isinstance

5
推荐指数
2
解决办法
1867
查看次数

instanceof vs isInstance()

class A{

    public A(){
        System.out.println("in A");
    }
}

public class SampleClass{

    public static void main(String[] args) {
        A a = new A();

        System.out.println(A.class.isInstance(a.getClass()));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

false
Run Code Online (Sandbox Code Playgroud)

为什么这是假的?双方A.classa.getClass()不能返回相同的类!

在哪种情况下我们会从isInstance()方法中得到真实的结果?

java instanceof isinstance

5
推荐指数
1
解决办法
5048
查看次数

classinfo类型列表

我正在寻找的只是可能值的列表,classinfo因为该文档未提供任何值,而且我似乎无法在线找到其他任何位置,更不用说SO了。

python types class isinstance python-3.x

5
推荐指数
1
解决办法
1467
查看次数

python type()和isinstance()无法识别类的实例

isinstance(object, classinfo) 无法识别类的实例。

我打印type(object)了该类并验证了它们是否是相同类型。他们俩都印出了完全一样的东西,但是当我尝试type(object) == class返回时False

这是该类的代码:

class Convolute(object):
    def __init__(self, channels, filter_shape, pool_shape, pool_type, stride_length=1):
        self.channels = channels
        self.filter_shape = filter_shape
        self.filters = [np.random.randn(filter_shape[0], filter_shape[1]) for i in range(channels)]
        self.biases = [random.random() for i in range (channels)]
        self.stride_length = stride_length
        self.pool_shape = pool_shape
        self.pool_type = pool_type
Run Code Online (Sandbox Code Playgroud)

这是该类的实例:

con1 = n.Convolute(3, (4, 4), (4, 4), 0)
Run Code Online (Sandbox Code Playgroud)

这是当我尝试验证它们是否相同类型时在python shell中的输出:

>>> import network as n
>>> con1 = n.Convolute(3, (4, 4), (4, 4), 0)
>>> type(con1) …
Run Code Online (Sandbox Code Playgroud)

python isinstance

5
推荐指数
0
解决办法
198
查看次数

哪种方法可以测试字典类型?

为什么有这么多不同的方法来测试字典?如果对象是字典,最现代的测试方法是什么?

adict = {'a': 1}

In [10]: isinstance(adict, types.DictType)
Out[10]: True

In [11]: isinstance(adict, types.DictionaryType)
Out[11]: True

In [12]: isinstance(adict, dict)
Out[12]: True

In [13]: isinstance(adict, collections.Mapping)
Out[13]: True

In [14]: isinstance(adict, collections.MutableMapping)
Out[14]: True
Run Code Online (Sandbox Code Playgroud)

python dictionary isinstance

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

python datetime实例检查日期返回true

我有 2 个对象,一个是日期时间,另一个是日期对象。当我想使用 isinstance (python 的首选方式)检查对象的类型时,我得到了一些荒谬的结果

>>> from datetime import date, datetime
>>> a=date.today()
>>> b=datetime.now()
>>> isinstance(a, date)
True
>>> isinstance(a, datetime)
False
>>> isinstance(b, date)
True       # this should be False
>>> isinstance(b, datetime)
True
Run Code Online (Sandbox Code Playgroud)

为什么 datetime 对象实例检查 date 返回 true?目前我正在使用type来解决这个问题,但是没有解决方法吗?

>>> type(a) == date
True
>>> type(a) == datetime
False
>>> type(b) == date
False
>>> type(b) == datetime
True
Run Code Online (Sandbox Code Playgroud)

python datetime isinstance

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

isinstance 在 Python 中如何为子类工作?

玩弄isinstance,我想知道它如何用于子类检查。

class A:
    pass

class B(A):
    pass

class C(B):
    pass

print(isinstance(C(), C)) # True, I understand this fine
print(isinstance(C(), B)) # True, Ok, but how is this `True`?
print(isinstance(C(), A)) # True, this too?
Run Code Online (Sandbox Code Playgroud)

type() 和 isinstance() 有什么区别?解释这isinstance确实适用于我的第二个和第三个print语句中所见的子类。我的问题不是那个,但是,它是如何工作的?当 classA被定义时,它没有关于 classB或 class存在的信息C,同样B没有关于C.

根据isinstance 如何为 List 工作? __instancecheck__被调用isinstance,所以如果我的课A是之前创建BC如何做到这一点的Python知道,C()确实是子类的一个实例(B的子类A)或子类的子类A …

python isinstance python-internals

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

PEP 622 - match 语句可以用作表达式吗?

PEP 622引入了match声明作为if-elif-else. 然而,我在提案或任何在线材料中找不到的一件事是该match声明是否可以用作表达式而不仅仅是作为声明。

举几个例子可以清楚地说明这一点:

示例1:

def make_point_2d(pt):
    match pt:
        case (x, y):
            return Point2d(x, y)
        case _:
            raise TypeError("not a point we support")
Run Code Online (Sandbox Code Playgroud)

示例2:

match response.status:
    case 200:
        do_something(response.data)
    case 301 | 302:
        retry(response.location)
Run Code Online (Sandbox Code Playgroud)

在第一个示例中,函数从子句内部返回case,而在第二个示例中,不返回任何内容。但我希望能够做类似以下假设示例的事情:

spouse = match name:
    case "John":
        "Jane"
    case "David":
        "Alice"
print(spouse)
Run Code Online (Sandbox Code Playgroud)

但它无法编译。

python isinstance python-3.10 structural-pattern-matching

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

什么时候是obj.GetType().IsInstanceOfType(typeof(MyClass))是真的吗?

我正在看别人写的这段代码,我想知道它什么时候会评估为真.基本上,它说someType是someOtherType的一个实例.它甚至有意义吗?到目前为止,我已经尝试过:

derivedClass.GetType().IsInstanceOfType(typeof(BaseClass)) 

baseClass.GetType().IsInstanceOfType(typeof(DerivedClass)) 

myClass.GetType().IsInstanceOfType(typeof(MyClass)) 
Run Code Online (Sandbox Code Playgroud)

并且所有人都评价为假.

任何帮助表示赞赏.

c# types isinstance

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