Python中的类结构和继承

Python中的类结构和继承,python,class,oop,multiple-inheritance,Python,Class,Oop,Multiple Inheritance,假设我有以下结构: class CasinoGame self.expected_return class CardGame(CasinoGame) self.deck def shuffle() def reset() # get a new deck and shuffle class Slot(CasinoGame) self.credits def spin() def reset() # return credit to us

假设我有以下结构:

class CasinoGame
    self.expected_return

class CardGame(CasinoGame)
    self.deck
    def shuffle()
    def reset() # get a new deck and shuffle

class Slot(CasinoGame)
    self.credits
    def spin()
    def reset() # return credit to user, reset bonus progression
现在我想介绍另一个类
VideoPoker
,它是一种基于卡的老虎机游戏。理想情况下,我希望使用
CardGame
Slot
类中的方法和变量。但是,我对使用以下结构(重组树?)犹豫不决:

我认为跟踪MRO和继承结构会让人困惑,尤其是当我以后需要添加更多的类,扩展深度和宽度时

理想情况下,我希望VidPoker继承老虎机(从技术上讲,VidPoker是一台老虎机),但从CardGame“借用”功能

在这种情况下,有没有最佳实践和首选的课程组织方式

编辑

一些人建议:

我认为mixin方法(接受的答案)在大多数情况下都是一个好的解决方案,但在方法使用类变量的某些情况下,它会失败

范例

# this works
class Class2(object):
    def method(self):
        print ("I am method at %s" % self.__class__)

class Class1(object): pass

class Class0(Class1):
    method = Class2.method

ob = Class0()
ob.method()

# this doesn't work
class Class2(object):
    s = 'hi'
    def method(self):
        print (self.s)

class Class1(object): pass

class Class0(Class1):
    method = Class2.method

ob = Class0()
ob.method()
回到我的示例,假设
CardGame
有一个由
shuffle
方法使用的不可变类变量
num_decks
。如果
VidPoker
继承了
Slot

我将无法调用
shuffle
,您可以尝试使用混音器
# this works
class Class2(object):
    def method(self):
        print ("I am method at %s" % self.__class__)

class Class1(object): pass

class Class0(Class1):
    method = Class2.method

ob = Class0()
ob.method()

# this doesn't work
class Class2(object):
    s = 'hi'
    def method(self):
        print (self.s)

class Class1(object): pass

class Class0(Class1):
    method = Class2.method

ob = Class0()
ob.method()