Can I make a class inherit a class "in-program" in Python?
heres what i have so far:
base = list(cls.__bases__)
base.insert(0, ClassToAdd )
base = tuple( base )
cls = type( cls.__name__, base, dict(cls.__dict__) )
Can I make a class inherit a class "in-program" in Python?
heres what i have so far:
base = list(cls.__bases__)
base.insert(0, ClassToAdd )
base = tuple( base )
cls = type( cls.__name__, base, dict(cls.__dict__) )
Yes, the type() built-in function has a three argument form that can do this:
type(name, bases, dict)
Return a new type object. This is essentially a dynamic form of the
classstatement. The name string is the class name and becomes the__name__attribute; the bases tuple itemizes the base classes and becomes the__bases__attribute; and the dict dictionary is the namespace containing definitions for class body and becomes the__dict__attribute.
Here is an example, using Greg Hewgill's suggestion:
class Foo(object):
def beep(self):
print('Hi')
class Bar(object):
x=1
bar=Bar()
# bar.beep()
# AttributeError: 'Bar' object has no attribute 'beep'
Bar=type('Bar',(Foo,object),Bar.__dict__.copy())
bar.__class__=Bar
bar.beep()
# Hi