Problems with properties

Peter Otten __peter__ at web.de
Fri Oct 14 12:04:01 EDT 2005


Michael Schneider wrote:

> Rather then dispatching the property assignment to setNothing, the
> property object is being replaced with a string.

properties are for newstyle classes only (i. e. classes that inherit from
object).

from unittest import TestCase
import unittest

class Task(object):
    def __init__(self,command):
        self._command = command

    def setNothing(self, value):
        raise AttributeError

    def getCommand(self):
        return self._command

    command=property(getCommand, setNothing)
    # or just
    # command=property(getCommand)


class taskTest(TestCase):

     def testTask(self):
         t = Task("dir c:")
         c = t.command
         self.assertEquals("dir c:", c)

         def set():
             t.command = "foo Bar"
         self.assertRaises(AttributeError, set)

         self.assertEquals("dir c:", t.command)



if __name__ == "__main__":
     unittest.main()

Peter



More information about the Python-list mailing list