types.AnyType - describing interfaces with sequences of types

Carlos Alberto Reis Ribeiro cribeiro at mail.inet.com.br
Wed Mar 28 15:42:51 CEST 2001


At 02:56 28/03/01 -0800, you wrote:
>You get the idea. AnyType above will be eternally happy to be equivelent to
>anything you compare it to. Note that you can't do 'IntType is AnyType',
>that tells you actual object identity. Now, if you wanted it to only show up
>as 'equivelent' to TypeTypes, and not say, strings, (e.g. "string" ==
>AnyType) you could do a check to make sure what its being compared to is a
>TypeType.....

My first instinct it was to do something like this. However, it did not 
work, but because of a dumb mistake of mine :-) I tried again now, and this 
is the resulting code:

class CAnyType:
   def __cmp__(self, other):
         return (type(other) != TypeType)
   def __rcmp__(self, other):
         return (type(other) != TypeType)

AnyType = CAnyType()

That was my fault - I was trying to compare the class to IntType, but I 
need an instance for the code to work.

Anyway, I felt that should be a better way to make it, maybe be inheriting 
from some "UserType" object. However no such object exists. I don't know if 
"UserType" does not exist because it not make sense, or if it does not 
exist simply because no one else required it before. The way it is, it's 
inconsistent, because:

 >>> type(AnyType)        # should return "TypeType"
<type 'instance'>



Carlos Ribeiro






More information about the Python-list mailing list