Salome HOME
22465: [CEA] sometimes isinstance(m, Mesh) returns False for Mesh objects // PPGP pb
authoreap <eap@opencascade.com>
Wed, 5 Feb 2014 08:08:10 +0000 (08:08 +0000)
committereap <eap@opencascade.com>
Wed, 5 Feb 2014 08:08:10 +0000 (08:08 +0000)
class MeshMeta(type):
    def __instancecheck__(cls, inst):
        """Implement isinstance(inst, cls)."""
        return any(cls.__subclasscheck__(c)
                   for c in {type(inst), inst.__class__})

    def __subclasscheck__(cls, sub):
        """Implement issubclass(sub, cls)."""
        return type.__subclasscheck__(cls, sub) or (cls.__name__ == sub.__name__ and cls.__module__ == sub.__module__)

...

class Mesh:
    __metaclass__ = MeshMeta

...

src/SMESH_SWIG/smeshBuilder.py

index 779aeb24e2790f16e160c342bf73fb7dbb9c097b..5af2bea9b60391180002f65ba8fddbfba4b6614e 100644 (file)
@@ -93,6 +93,16 @@ import SALOME
 import SALOMEDS
 import os
 
+class MeshMeta(type):
+    def __instancecheck__(cls, inst):
+        """Implement isinstance(inst, cls)."""
+        return any(cls.__subclasscheck__(c)
+                   for c in {type(inst), inst.__class__})
+
+    def __subclasscheck__(cls, sub):
+        """Implement issubclass(sub, cls)."""
+        return type.__subclasscheck__(cls, sub) or (cls.__name__ == sub.__name__ and cls.__module__ == sub.__module__)
+
 ## @addtogroup l1_auxiliary
 ## @{
 
@@ -1144,6 +1154,7 @@ def New( study, instance=None):
 #  new nodes and elements and by changing the existing entities), to get information
 #  about a mesh and to export a mesh into different formats.
 class Mesh:
+    __metaclass__ = MeshMeta
 
     geom = 0
     mesh = 0
@@ -4596,7 +4607,7 @@ class Mesh:
         return self._valueFromFunctor(SMESH.FT_Skew, elemId)
 
     pass # end of Mesh class
-    
+
 ## Helper class for wrapping of SMESH.SMESH_Pattern CORBA class
 #
 class Pattern(SMESH._objref_SMESH_Pattern):