2
0
Darren Ranalli 22 жил өмнө
parent
commit
81d00c8bd6

+ 12 - 0
direct/src/showbase/PythonUtil.py

@@ -662,3 +662,15 @@ def lineTag(baseFileName=1, verbose=0, separator=':'):
     else:
         return '%s%s%s%s%s' % (fileName, separator, lineNum, separator,
                                funcName)
+
+class PureVirtual:
+    """ Python classes that want to have C++-style pure-virtual functions
+    can derive from this class and call 'derivedMustOverride' from their
+    'pure virtual' methods. Such Python classes can still be instantiated,
+    but they will give an informative error when a pure-virtual method
+    is invoked. """
+    def derivedMustOverride(self):
+        """ call this function from methods that must be overriden
+        and are not meant to be chained down to. This simulates C++
+        pure-virtual methods. """
+        raise 'error: derived class must implement %s' % callerInfo()[2]