Я делаю игру и хотел создать класс объектов для своих объектов, но также решил немного проявить себя sh, и теперь я столкнулся с дорожным блоком.
Итак, я хочу функцию быть вызываемым при возможности использовать его как каталог. Я не хочу, чтобы функции get / set мешали классам get / set.
Пример:
obj.position.get()
obj.position.get.x()
Код:
class Object:
def __init__(self, x, y, width, height):
self.__x = x
self.__y = y
self.__width = width
self.__height = height
self.size = self.__Size(self)
self.position = self.__Position(self)
class __Size:
def __init__(self, outer):
self.__outer = outer
self.get = self.__get(self.__outer)
self.set = self.__set(self.__outer)
# Trying to make the two functions below work without interfering with the __get and __set classes
def get(self):
return self.__outer.__width, self.__outer.__height
def set(self, width, height):
self.__outer.__width = width
self.__outer.__height = height
class __get:
def __init__(self, outer):
self.__outer = outer
def width(self):
return self.__outer.__width
def height(self):
return self.__outer.__height
class __set:
def __init__(self, outer):
self.__outer = outer
def width(self, width):
self.__outer.__width = width
def height(self, height):
self.__outer.__height = height
class __Position:
def __init__(self, outer):
self.__outer = outer
self.get = self.__get(self.__outer)
self.set = self.__set(self.__outer)
# Trying to make the two functions below work without interfering with the __get and __set classes
def get(self):
return self.__outer.__x, self.__outer.__y
def set(self, x, y):
self.__outer.__x = x
self.__outer.__y = y
class __get:
def __init__(self, outer):
self.__outer = outer
def width(self):
return self.__outer.__x
def height(self):
return self.__outer.__y
class __set:
def __init__(self, outer):
self.__outer = outer
def x(self, x):
self.__outer.__x = x
def y(self, y):
self.__outer.__y = y