模块之间的实例和类型

时间:2018-08-02 08:41:47

标签: python-2.7

我正在尝试检查此setter中base_geo的类型。

a[...,index]

输出以下内容

    @base_geo.setter
    def base_geo(self, base_geo):
        test_geo = Geo(self.data_node, "foo_geo")

        print "inspect module base_geo: %s" % inspect.getmodule(base_geo)
        print "inspect module Geo: %s" % inspect.getmodule(Geo)

        print "type base_geo: %s" % type(base_geo)
        print "base_geo: %s" % base_geo
        print "base_geo.__class__: %s" % base_geo.__class__
        print "Geo: %s" % Geo
        print "type(base_geo) == Geo: %s" % str(type(base_geo) == Geo)
        print "isinstance(base_geo, Geo): %s" % isinstance(base_geo, Geo)
        print "base_geo.__class__ == Geo: %s\n" % str(base_geo.__class__ == Geo)

        print "___TEST__GEO___"
        print "inspect module test_geo: %s" % inspect.getmodule(test_geo)
        print "inspect module Geo: %s" % inspect.getmodule(Geo)

        print "type test_geo: %s" % type(test_geo)
        print "test_geo: %s" % test_geo
        print "test_geo.__class__: %s" % test_geo.__class__
        print "Geo: %s" % Geo
        print "type(test_geo) == Geo: %s" % str(type(test_geo) == Geo)
        print "isinstance(test_geo, Geo): %s" % isinstance(test_geo, Geo)
        print "test_geo.__class__ == Geo: %s" % str(test_geo.__class__ == Geo)

        if not isinstance(base_geo, Geo):
            raise TypeError, ("%s is not of type \"Geo\"" % base_geo)
        self._base_geo = base_geo

关于test_geo案例为何按预期工作而base_geo却没有按预期工作的任何想法?我能想到的唯一区别是base_geo是在其他模块中构造的。通过在模块之间保持相同的导入,似乎可以解决其他有类似问题的人的例子。

1 个答案:

答案 0 :(得分:0)

isinstance(base_geo, deformator.builderator.data_types.geo.Geo)

代替

isinstance(base_geo, Geo)

解决了