s...@uce.gov writes: > 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)
A class defines a type of object. If you don't actually want instances of that class, then you don't really want a class. > 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? You could. Or you could simply use a factory function:: def make_number(value): if value <= 100: result = SmallNumbers(value) else: result = BigNumbers(value) result.original_value = value return result t = make_number(200) -- \ “Programs must be written for people to read, and only | `\ incidentally for machines to execute.” —Abelson & Sussman, | _o__) _Structure and Interpretation of Computer Programs_ | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list