Contiuing from this post: Dynamically creating a class from file, type(name, bases, dict)
can be used to dynamically create a class with name name
, with base classes bases
, and attributes dict
.
I have classes such as:
class City:
def __init__(self):
self.name = 0
class Building:
def __init__(self):
self.number = 100
I want to create a new class from a string (for ex. "School"), which inherits from the above classes. I have done:
School = type("School", (City, Building), {"school_name": "abc"}
s = School()
hasattr(s, "school_name")
gives True
. However, hasattr(s, "name")
gives False
.
How can I make sure that:
School
inherits the attributes of its base class(es)?School
after already creating the class School = type("School", (Building, Home), {"school_name": "abc"}
? (Suppose I want to add two new attributes (address
, pincode
) to the class later on in my script - can I do that?)City’s init method gets override by Building’s init method try
hasattr(s, ‘number’)
and it should return True.
Define your class as
class City:
name = 0
class Building:
number = 100
This way attributes can be inherited.
For the second question, not sure about what you are asking for, but try
School.address = ‘foo’
School.pincode = ‘bar’