wishlist Python3K: subclass ints

Huaiyu Zhu hzhu at rocket.knowledgetrack.com
Fri Jun 9 13:05:57 EDT 2000


On Thu, 08 Jun 2000 09:58:47 -0700, Pete Shinners <pete at visionart.com> wrote:
>> > 1. Everything is an object of a class that can be subclassed.
>> 
>> You want to subclass integers, why?
>
> - Also gone are all the nit-picking type checking routines.
>   instead of first checking if a variable is a "class" type,
>   then checking if the object is a certain class, all variables
>   hold objects of the same "rank". the best move would be to
>   have "int" and "float" be subclassed from a base class like
>   "realnumber".

Here's a simulation:
"""
Class.py
Simulation of proposed class heirarchy
"""

class Object: pass
class Class(Object): pass
class Instance(Object): pass
class Number(Instance): pass
class Approx(Instance): pass
class Complex(Number): pass
class Real(Complex): pass
class Integer(Real): pass
class ComplexFloat(Complex, Approx): pass
class RealFloat(Real, Approx): pass

_Class = type(Class)
_Instance = type(Class())
_int = type(1)
_float = type(1.0)
_complex = type(1j)

def classOf(a):
	if type(a) == _Instance:	return a.__class__
	elif type(a) == _Class:		return Class
	elif type(a) == _int:		return Integer
	elif type(a) == _float:		return RealFloat
	elif type(a) == _complex:	return ComplexFloat

def isOfClass(a, b):
	if type(a) == _Instance:	return isinstance(a, b)
	else:		return issubclass(classOf(a), b)

if __name__ == "__main__":
	print classOf(Class)
	print classOf(Class())
	print classOf(1)
	print classOf(1.1)
	print classOf(1j)

	print isOfClass(Class, Object)
	print isOfClass(Class(), Object)
	print isOfClass(1, Object), isOfClass(1, Number), isOfClass(1, Integer)
	print isOfClass(1.1, Real)
	print isOfClass(1j, Real), isOfClass(1j, Complex), isOfClass(1j, Approx)



-- 
Huaiyu Zhu                               hzhu at knowledgetrack.com
KnowledgeTrack Corporation               Tel: 925 738 1907
7020 Koll Center Parkway, Suite 110      Fax: 925 738 1039
Pleasanton, CA 94566



More information about the Python-list mailing list