dynamic casting in python

Rainer Deyke root at rainerdeyke.com
Fri Apr 20 13:14:46 EDT 2001


"Christian Reyes" <christian at rocketnetwork.com> wrote in message
news:9bo76f$q82$1 at bob.news.rcn.net...
> How do I do it?
> Is it possible?

def dynamic_cast(klass, object):
  if isinstance(object, klass):
    return object
  # Returns 'None' if 'object' is not an instance of 'klass'

class C: pass
class A(C): pass
class B(C): pass

def create_C(name): # Factory function
  if name == 'A': return A()
  if name == 'B': return B()
  raise ValueError, 'create_C argument must be "A" or "B"'

spam = create_C('A')
spam_as_A = dynamic_cast(A, spam) # Sets 'spam_as_A' to 'spam'.
spam_as_B = dynamic_cast(B, spam) # Sets 'spam_as_B' to 'None'.


--
Rainer Deyke (root at rainerdeyke.com)
Shareware computer games           -           http://rainerdeyke.com
"In ihren Reihen zu stehen heisst unter Feinden zu kaempfen" - Abigor





More information about the Python-list mailing list