[Python-es] es posible convertir __setattr__ en un staticmethod?

Juan Ignacio euribates en gmail.com
Lun Feb 28 13:21:47 CET 2011


Quizá para eso te vendría mejor usar "property"

http://docs.python.org/library/functions.html#property

Pero no se si lo tienes en python 2.3, me da que no


2011/2/28 Jose Caballero <jcaballero.hep en gmail.com>:
>
>
>
>
> On Feb 28, 2011, at 4:20, Juan Ignacio <euribates en gmail.com> wrote:
>
>> 2011/2/28 Jose Caballero <jcaballero.hep en gmail.com>:
>>
>>> La pregunta es si se puede hacer algo como
>>> class myclass:
>>>   def __setattr__(key, value):
>>>         self.__dict__[key] = value
>>>         print 'passing key %s with value %s' %(key, value)
>>>   __setattr__ = staticmethod( __setattr__ )
>>>
>>> y luego poder hacer
>>>
>>> myclass.x = 1
>>> myclass.y = 2
>>
>> Se puede, pero no hace falta:
>>
>>>>> class C(object):
>> ...     pass
>> ...
>>>>> C.x = 1
>>>>> C.y = 1
>>>>> print C.x
>> 1
>>
>> Aunque normalmente se prefiere algo como esto:
>>
>> class C(object):
>>    x = 1
>>    y = y
>>
>> print C.x
>> 1
>
>
> Pero fíjate que yo quiero hacer más cosas y no solo asignar un valor a la variable. En el ejemplo que puse hago un print. También quiero hacer validación de los valores. Por eso necesito una función/método. Y había pensado en __setattr__
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Juan Ignacio Rodríguez de León
Móvil: 605 890514
E-Mail: euribates en gmail.com
http://www.metriz.com/
http://descon2.com/
http://www.elornitorrincoenmascarado.com/


Más información sobre la lista de distribución Python-es