假设我有一个三个类(class)的系统。GameClass
在初始化时创建其他两个类的实例。
class FieldClass:
def __init__( self ):
return
def AnswerAQuestion( self ):
return 42
class PlayerClass:
def __init__( self ):
return
def DoMagicHere( self ):
# Access "AnswerAQuestion" located in the "FieldClass" instance in "GameClass"
pass
class GameClass:
def __init__( self ):
self.Field = FieldClass()
self.Player = PlayerClass()
从
AnswerAQuestion()
实例访问位于FieldClass
中的PlayerClass
的最佳方法是什么?FieldClass
实例的引用传递给PlayerClass
? PlayerClass
中包含一个额外的变量来保存FieldClass
实例。 最佳答案
我将使用Dependency Injection:在构造函数调用等中使用所需的GameClass
和FieldClass
实例化PlayerClass
(即,而不是像现在这样在GameClass
中创建依赖对象)。
class GameClass:
def __init__( self, fc, pc ):
self.Field = fc
self.Player = pc
class PlayerClass:
def __init__( self, fc ):
self.fc = fc
def DoMagicHere( self ):
# use self.fc
pass
fc=FieldClass()
pc=PlayerClass(fc)
gc=GameClass(fc, pc)
使用DI,一旦设置阶段完成,您就可以轻松访问所需的成员。