class Num(object):

    def __init__(self, n=None, half=None, square=None):
        self._n = 0
if n is not None:
    self.n = n
if half is not None:
    self.half = half
if square is not None:
    self.square = square

@property
def n(self):
    return self._n

@n.setter
def n(self, n):
    self._n = n

@property
def half(self):
    return self._n * 0.5

@half.setter
def half(self, n):
    self._n = n * 2

@property
def square(self):
    return self._n ** 2

@square.setter
def square(self, n):
    self._n = n ** 0.5
n = Num(square=100)
print(n.half)
Как эффективно спроектировать класс, содержащий связанные переменные-члены?