假设我有以下结构:
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
类的方法和变量。但是,我很犹豫是否使用以下结构(重组树?)地址:
class VidPoker(CardGame, Slot)
我认为跟踪MRO和继承结构会让人困惑,尤其是当我以后需要添加更多类,扩展深度和宽度时。你知道吗
理想情况下,我希望VidPoker继承吃角子老虎机(从技术上讲,电动扑克是一个吃角子老虎机),但“借用”功能从CardGame。你知道吗
在这种情况下,有没有什么最佳的实践,或者说是组织课程的首选方法?你知道吗
编辑
一些人建议:Is it possible to do partial inheritance with Python?
我认为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
有一个不可变的类变量num_decks
,由shuffle
方法使用。如果VidPoker
继承了Slot
,我就不能从shuffle
调用它。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐