Hey all, Does anyone know if it's possible to call a property setter inside of a class's init method? Below is a code sample of what I'm trying to do.
class Question(object); def __init__(self, value): self.text(value) @property def text(self): return self._text @text.setter def text(self, value): if not isinstance(value, str): raise TypeError self._text = value Here's an explanation of what I'm trying to accomplish: I have a class with an init method that is getting bloated with error-checking guard clauses. I was hoping to "hide" some of these guard clauses by using the @property decorator and its associated setter method. I'd like to use the Question.text property to set the value (or raise an error) upon instantiation of a Question object. I figured this would clean up my init method and move the error-checking code closer to the relevant class attribute. I've tried numerous variations on the above init method, but all without success. In the current version, when I try: >>> q = Question("Hello world?") I get the following error: AttributeError: 'Question' object has no attribute '_text' I was hoping text property would create self._text for me on instantiation, but apparently no dice. I'm also getting errors when I do the below variations: ### variation 1 #### def __init__(self, value): self._text = '' self.text(value) ### variation 2 #### def __init__(self, value): self._text = None self.text(value) Can anyone point out what I'm doing wrong? I suspect I'm misunderstanding properties and/or the finer points of object instantiation. Any help would be greatly appreciated! Thanks! Serdar
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor