Python实例化子类

Python实例化子类,python,Python,我编写了以下代码,试图找出如何在主类中实例化子类。。我想到了一些不对劲的事。。至少对我来说 这种类型的实例化是否有问题?有没有更好的方法来调用子类 class Family(): def __init__(self): self.Father = self.Father(self) self.Mother = self.Mother(self) class Father(): def __init__(self, instance = ''): se

我编写了以下代码,试图找出如何在主类中实例化子类。。我想到了一些不对劲的事。。至少对我来说

这种类型的实例化是否有问题?有没有更好的方法来调用子类

class Family():
  def __init__(self):
    self.Father = self.Father(self)
    self.Mother = self.Mother(self)

  class Father():
    def __init__(self, instance = ''):
      self = instance if instance != '' else self
      print self

    def method(self):
      print "Father Method"

    def fatherMethod(self):
      print "Father Method"


  class Mother():
    def __init__(self, instance = ''):
      self = instance if instance != '' else self
      print self

    def method(self):
      print "Mother Method"

    def motherMethod(self):
      print "Mother Method"



if __name__ == "__main__":
  Family = Family()
  Family.Father.method()
  Family.Mother.method()

你是对的,这个代码感觉不对。我的问题是

你想达到什么目标?不需要在家庭内部定义父亲和母亲,他们可以在家庭外部定义并聚合到家庭中。父亲和母亲不应该在家庭之外接触,这是事实吗?Python没有可见性修饰符,例如,因为有一条原则:“我们在这里都长大了”,这意味着开发人员应该负责并承担对代码的负责任的处理

你真的需要像Class.Class.method这样的东西吗?除此之外,方法查找的成本有点高,这类链可能指示错误的轴,这意味着您试图从一个设计不太清楚的点掌握功能。抱歉,这里太模糊了


你是对的,这个代码感觉不对。我的问题是

你想达到什么目标?不需要在家庭内部定义父亲和母亲,他们可以在家庭外部定义并聚合到家庭中。父亲和母亲不应该在家庭之外接触,这是事实吗?Python没有可见性修饰符,例如,因为有一条原则:“我们在这里都长大了”,这意味着开发人员应该负责并承担对代码的负责任的处理

你真的需要像Class.Class.method这样的东西吗?除此之外,方法查找的成本有点高,这类链可能指示错误的轴,这意味着您试图从一个设计不太清楚的点掌握功能。抱歉,这里太模糊了

布莱格

为什么父亲和母亲都住在家里?没有理由这么做。在外部定义它们,然后在内部实例化它们

我不确定你到底想做什么。您可能需要研究,这是在CLS中定义子对象的一种方法。

Blergh

为什么父亲和母亲都住在家里?没有理由这么做。在外部定义它们,然后在内部实例化它们


我不确定你到底想做什么。您可能想研究一下,哪些是在CLS中定义子对象的一种方法。

您在Python术语中定义的至少不是子类,而是内部类或嵌套类。我猜这并不是你想要达到的目标,但我不确定你到底想要什么——但以下是我的四个最佳猜测:

从另一个类继承的类称为子类。要使father成为family的子类,请使用语法类FatherFamily:。这里创建的实际上是一个内部类,而不是子类

当您看到类似Family.Father.method的内容时,通常意味着Family是一个类,而Father是该模块中的一个类。在Python中,module基本上是指.py文件。一个模块没有一个uuu init_uuu方法,但是所有位于模块顶层的代码,比如if uuu name_uuu。。。在导入模块时执行第行

类似地,您可以创建一个族-在Python中,它基本上意味着文件系统上的一个目录,其中包含一个_init _;.py文件。父亲和母亲将成为包中的模块或类

可能您试图实现的是声明Family类型的对象始终具有父对象和母对象。这不需要嵌套类事实上,嵌套类是一种完全奇怪的方法。只需使用:


您在Python术语中定义的至少不是子类——它们是内部类或嵌套类。我猜这并不是你想要达到的目标,但我不确定你到底想要什么——但以下是我的四个最佳猜测:

从另一个类继承的类称为子类。要使father成为family的子类,请使用语法类FatherFamily:。这里创建的实际上是一个内部类,而不是子类

当您看到类似Family.Father.method的内容时,通常意味着Family是一个类,而Father是该模块中的一个类。在Python中,module基本上是指.py文件。一个模块没有一个uuu init_uuu方法,但是所有位于模块顶层的代码,比如if uuu name_uuu。。。在导入模块时执行第行

类似地,您可以创建一个族-在Python中,它基本上意味着文件系统上的一个目录,其中包含一个_init _;.py文件。父亲和母亲将成为包中的模块或类

可能您试图实现的是声明Family类型的对象始终具有父对象和母对象。实际上,这不需要嵌套类,n ested类是一种完全奇怪的方式。只需使用:


这看起来很奇怪。为什么要将self传递给内部类构造函数?请解释一下你想用这个实现什么。这看起来很奇怪。为什么要将self传递给内部类构造函数?请解释一下你想用这个实现什么。我很好奇-你的目标是什么?我很好奇-你的目标是什么? >>> class Mother(): ... def whoami(self): ... print "I'm a mother" ... >>> class Father(): ... def whoami(self): ... print "I'm a father" ... >>> class Family(): ... def __init__(self): ... self.mother = Mother() ... self.father = Father() ... >>> f = Family() >>> f.father.whoami() I'm a father >>> f.mother.whoami() I'm a mother >>>