我目前有两个类:Block和Pic
不幸的是它们几乎完全相同。我正在寻找删除两个类中重复部分的最佳方法。
class Block(pygame.sprite.Sprite):
def __init__(self, colour, width, height):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface([width, height])
self.image.fill(colour)
def invert(self):
self.image = inverted(self.image)
def set_speed(self, speed):
self.speed = speed
class Pic(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load('icon.png').convert()
def invert(self):
self.image = inverted(self.image)
def set_speed(self, speed):
self.speed = speed
答案 0 :(得分:3)
使用class inheritance
,即创建一个包含公共部分和类方法的类,并从这个新类派生您的类Block
和Pic
。
这里给出了一些例子:http://www.jesshamrick.com/2011/05/18/an-introduction-to-classes-and-inheritance-in-python/
答案 1 :(得分:3)
如何创建公共基类?
class BaseClass(pygame.sprite.Sprite):
'baseclass for your derived classes, feel free to choose a better name'
def __init__(self):
pygame.sprite.Sprite.__init__(self)
def invert(self):
self.image = inverted(self.image)
def set_speed(self, speed):
self.speed = speed
class Block(BaseClass):
def __init__(self, colour, width, height):
super(Block, self).__init__()
self.image = pygame.Surface([width, height])
self.image.fill(colour)
class Pic(BaseClass):
def __init__(self):
super(Pic, self).__init__()
self.image = pygame.image.load('icon.png').convert()
答案 2 :(得分:0)
如果这些类在您的应用程序中是可互换的 - 也就是说您可以将其替换为另一个并且应用程序不会注意到 - 创建一个包含invert和set_speed方法的超类,并让类继承它。他们可以保留__ init __方法。