[Level 3] Python Encapsulation.
There are two ways to implement property encapsulation.
[test1.py]
Wish this helps.
regards,
Stanley Huang
[test1.py]
#!/bin/env python
class C(object):
#class C():
y = 3
z = 4
def __init__(self):
self.__x = 2
self.z = 0
self._z = 00
self.__z = 000
def getx(self):
return self.__x
def setx(self, val):
print "x is read only"
x = property(getx, setx)
# x = property(getx)
# x = property(lambda self: self.__x)
c=C()
print(c.x,c.y,c.z)
c.x=3
print(c.x,c.y,c.z)
print c.z
print c._z
print c.__z #AttributeError
#class C():
y = 3
z = 4
def __init__(self):
self.__x = 2
self.z = 0
self._z = 00
self.__z = 000
def getx(self):
return self.__x
def setx(self, val):
print "x is read only"
x = property(getx, setx)
# x = property(getx)
# x = property(lambda self: self.__x)
c=C()
print(c.x,c.y,c.z)
c.x=3
print(c.x,c.y,c.z)
print c.z
print c._z
print c.__z #AttributeError
[test2.py]
#!/bin/env python
#!/bin/env python
class B(object):
def __init__(self):
self.__x = None
@property
def x(self):
"""I'm the 'x' property."""
return self.__x
@x.setter
def x(self, value):
self.__x = value
@x.deleter
def x(self):
del self.__x
b=B()
b.x=12
print(b.x)
print(b.__x) #AttributeError
class B(object):
def __init__(self):
self.__x = None
@property
def x(self):
"""I'm the 'x' property."""
return self.__x
@x.setter
def x(self, value):
self.__x = value
@x.deleter
def x(self):
del self.__x
b=B()
b.x=12
print(b.x)
print(b.__x) #AttributeError
Wish this helps.
regards,
Stanley Huang
Comments
Post a Comment