class Quadrangle:
def __init__(self, width, height, color):
self.width = width
self.height = height
self.color = color
def get_area(self):
return self.width * self.height
def set_area(self, width, height):
self.width = width
self.height = height
square = Quadrangle(5, 5, "black")
print(square.get_area())
print(square.width)
square.width = 10
print(square.get_area())
dir (square)
class Quadrangle:
def __init__(self, width, height, color):
self._width = width
self._height = height
self._color = color
def get_area(self):
return self._width * self._height
def _set_area(self, width, height):
self._width = width
self._height = height
square = Quadrangle(5, 5, "black")
print(square.get_area())
print(square._width)
square._width = 10
print(square.get_area())
square._set_area(3, 3)
print(square.get_area())
- 파이썬에서는 attribute, method 앞에 __(double underscore)를 붙이면 실제로 해당 이름으로 접근이 허용되지 않음 - 실은 __(double underscore)를 붙이면, 해당 이름이 _classname__해당 속성 또는 메소드 이름 으로 변경되기 때문임
class Quadrangle:
def __init__(self, width, height, color):
self.__width = width
self.__height = height
self.__color = color
def get_area(self):
return self.__width * self.__height
def __set_area(self, width, height):
self.__width = width
self.__height = height
square = Quadrangle(5, 5, "black")
dir(square)
'_Quadrangle__color', '_Quadrangle__height', '_Quadrangle__set_area', '_Quadrangle__width'
square = Quadrangle(5, 5, "black")
print(square.__set_area(10, 10))
print(square.__width)
print(square.get_area())
print(square.__width) square.__width = 10 square.__set_area(3, 3)
print(square.__width)
square.__width = 10
square.__set_area(3, 3)
class Circle:
def __init__(self, radius, name):
self.__radius = radius
self.__name = name
def get_name(self):
return self.__name
def get_area(self):
return 3.14 * self.__radius ** 2
circle = Circle(3, 'dave')
print (circle.get_name(), circle.get_area())
class Circle:
def __init__(self, radius, name):
self.__radius = radius
self.__name = name
def get_name(self):
return self.__name
def get_area(self):
return 3.14 * self.__radius ** 2
def get_length(self):
return 2 * 3.14 * self.__radius
circle = Circle(3, 'dave')
print (circle.get_name(), circle.get_area(), circle.get_length())