[Tutor] class arguments?

spir denis.spir at free.fr
Fri Jan 23 12:04:39 CET 2009


Le Thu, 22 Jan 2009 23:29:59 -0000,
"Alan Gauld" <alan.gauld at btinternet.com> a écrit :

> 
> "Alan Gauld" <alan.gauld at btinternet.com> wrote 
> 
> >> is there a way to give arguments to a class definition? 
> 
> I see that Kent interpreted your question differently to me. 
> If you do mean that you want to dynamically define class 
> attributes rather than instance attributes then __init__() 
> won't work. But I'd be interested to understand why and 
> how you would want to do that? And in particular how 
> you would use them after creating them?

Thank you Alan and sorry for not having been clear enough. The point actually was class (definition) attributes. I thought at e.g. Guido's views that lists were for homogeneous sequences as opposed to tuples rather like records. And a way to ensure sich a homogeneity, in the sense of items beeing of the same type or super type.
The straightforward path to ensure that, as I see it, is to add proper argument to a class definition. But I couldn't find a way to do this. In pseudo-code, it would look like that:

class MonoList(list, item_type):
	typ = item_type
	def __init__(self,items):
		self._check_types(items)
		list.__init__(self,items)
	def _check_types(self,items):
		for item in items:
			if not isinstance(item,MonoList.typ):
				message = "blah!"
				raise TypeError(message)
	def __setitem__(self,index,item):
		if not isinstance(item,MonoList.typ):
			message = "blah!"
			raise TypeError(message)
		list.__setitem__(self,index,item)
	def __add__(self,other):
		self._check_types(other)
		list.__add__(self,other)
	.......

Well, I realize now that it is a bit more complicated. MonoList itself should be an intermediate base class between list and and subclasses that each allow only a single item type. Otherwise all monolist-s have the same item type ;-)
Just exploring around...

denis

> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 


------
la vida e estranya


More information about the Tutor mailing list