gpt4 book ai didi

Python OOP - 类关系

转载 作者:太空狗 更新时间:2023-10-29 20:52:59 26 4
gpt4 key购买 nike

假设我有一个包含三个类的系统。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()

PlayerClass 实例中访问位于 FieldClass 中的 AnswerAQuestion() 的最佳方法是什么?

  • 我是否必须将对 FieldClass 实例的引用传递给 PlayerClass
  • 还有其他更好的方法来解决这个问题吗?执行上述操作会使我不得不在 PlayerClass 中包含一个额外的变量来保存 FieldClass 实例。
  • 在 Python 中是否有一种完全不同的管理类关系的方法?

最佳答案

我会选择 Dependency Injection :在构造函数调用等中使用所需的 FieldClassPlayerClass 实例化 GameClass (即,而不是从 中创建依赖对象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,您可以在设置阶段完成后轻松访问所需的成员。

关于Python OOP - 类关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com