The exact equivalent would be:
class Cat(object):
def __init__(self, name...):
self.__name = name
...
def getName(self):
return self.__name
def setName(self, name):
self.__name = name
...
It will work, but you will never do it in Python. That's why:
- There is nothing personal in Python, and you can always get around the restrictions using some tricks in this language. That way, you usually value more communications, docs, and APIs that enforce behavior.
- Direct attribute access is great for Python. If you are not doing something special when getting or setting up, then you are not writing recipients and setters. The best Python libs do this.
- -, "", . 1 - var, , API.
Python:
class Cat(object):
def __init__(self, name):
self.name = name
c = Cat('billy')
print c.name
c.name = 'kit'
print c.name
, , , ? :
class Cat(object):
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, name):
""" Make the name uppercase when setting it """
self._name = name.upper()
, , :
c = Cat('billy')
print c.name
c.name = 'kit'
print c.name
?
- getter setter, , , , .
- , ONE getter/setter. , , . API .