return an object of a different class

MRAB python at mrabarnett.plus.com
Wed Feb 16 03:32:12 CET 2011


On 16/02/2011 02:23, spam at uce.gov wrote:
> How can I do something like this in python:
>
> #!/usr/bin/python3.1
>
> class MyNumbers:
>   def __init__(self, n):
>     self.original_value = n
>     if n <= 100:
>       self = SmallNumers(self)
>     else:
>       self = BigNumbers(self)
>
> class SmallNumbers:
>   def __init__(self, n):
>     self.size = 'small'
>
> class BigNumbers:
>   def __init__(self, n):
>     self.size = 'big'
>
> t = MyNumbers(200)
>
>
> When I do type(t) it says MyNumbers, while I'd want it to be BigNumbers,
> because BigNumbers and SmallNumbers will have different methods etc...
>
> Do I need to use metaclasses?
>
Why not just make MyNumbers a function?



More information about the Python-list mailing list