【发布时间】:2020-12-04 11:42:58
【问题描述】:
我读过这样的声明:“当对象有自己的生命周期并且子对象只能与一个父对象关联时,就会发生聚合”。但是,它适用于我的代码:-
class Country:
def __init__(self, name=None, population=0):
self.name = name
self.population = population
def printDetails(self):
print("Country Name:", self.name)
print("Country Population", self.population)
class Person:
def __init__(self, name, country):
self.name = name
self.country = country
def printDetails(self):
print("Person Name:", self.name)
self.country.printDetails()
class Man:
def __init__(self, name, country):
self.name = name
self.country = country
def printDetails(self):
print("Person Name:", self.name)
self.country.printDetails()
c = Country("Wales", 1500)
p = Person("Joe", c)
m = Man('John', c);
p.printDetails()
m.printDetails()
c.printDetails()
【问题讨论】:
-
您的子类
Person和Man只有一个父对象Country。这与您引用的内容有何不同? -
父对象是
Person和Man,因为它们拥有对象Country,对吧? -
不,恰恰相反。当你有一个一对多的关系时,一个是父母,许多是孩子。所以一个国家的所有居民都是孩子。
-
我认为这正是 OP 所要求的,@Barmar。在 OO 的意义上,对象 O 的父对象(或者我更喜欢“所有者”)是一个对 O 的引用或以某种方式合并 O 的对象。引用 O 的多个对象可能会否定这一点,但这并不能扭转局面。这只是意味着它们之间的关系不满足聚合的通常定义——在任一方向上。
-
引用本身并不定义父子关系。
标签: python python-3.x class oop aggregation