从抽象类python3继承private属性

时间:2019-09-17 13:46:11

标签: python-3.x oop inheritance abstract-class

我有一个抽象类,将用作模板来实现不同类型的子类。 我想定义一些对所有子类都是必需的属性/方法。例如

class BlockModel(ABC):

    def __init__(self, position):
        self.__position = position
        self.__lives = None
        self.__hitbox = None

    @property
    def lives(self):
        return self.__lives

    @lives.setter
    def lives(self, lives):
        self.__lives = lives

    @property
    def hitbox(self):
        return self.__hitbox

    @hitbox.setter
    def hitbox(self, hitbox):
        self.__hitbox = hitbox

    @abstractmethod
    def method1(self)
    #some abstract methods

    @abstractmethod
    def method2(self)
    #some abstract methods

例如,当我创建一个子类时

class Block1(BlockModel):

    def __init__(self,position_):
        super().__init__(position_)
        self.__lives=1
        self.__hitbox = pygame.Rect(self.__position['x'],
                                    self.__position['y'],
                                    5,
                                    5)

 #Implement abstract methods

第二类不继承属性__position__lives__hitbox,但是没有下划线的公共属性(我知道其中没有真正的私有属性/方法蟒蛇)。还有一种方法也可以在子类中将它们保持私有(带下划线)吗?

0 个答案:

没有答案