KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Having a object x which is an instance of some class how to create a new instance of the same class as the x object, without importing that all possible classes in the same namespace in which we want to create a new object of the same type and using isinstance to figure out the correct type. For example if x is a decimal number: >>> from decimal import Decimal >>> x = Decimal('3') >>> x Decimal('3') how to create new instance of Decimal . I think the obvious thing to do would be either of these: >>> type(x)('22') Decimal('22') >>> x.__class__('22') Decimal('22') Since __class__ will not work on int for example: >>> 1.__class__ File "<stdin>", line 1 1.__class__ Is it good practice to use type to achieve this, or is there some other ways or more caveats when using this approach for creating new objects? Note : There was an answer that is now deleted that gave a right way to get __class__ of int . >>> (1).__class__ <type 'int'> Use case The question is mostly theoretical, but I am using this approach right now with Qt to create new instances of QEvent . For example, since the QEvent objects are consumed by the application event handler in order to post the event to QStateMachine you need to create a new instance of the event otherwise you get runtime error because the underlying C++ object get deleted. And since I am using custom QEvent subclasses tha
Tags (comma-separated)
Save Edits
Cancel