所以我通常不使用 OOP,显然我并不像我想象的那样理解它。
假设我有一个(地理)州的课程:
class State(object):
@property
def population(self):
return self._population
@population.setter
def population(self,value):
if value < 0:
raise ValueError("Population must not be negative")
else:
self._population = value
和一个几乎相同(目前)的城镇类:
class Town(State):
@property
def population(self):
return self._population
@population.setter
def population(self,value):
if value < 0:
raise ValueError("Population must not be negative")
else:
self._population = value
现在假设我实例化一个状态并给它一个特定的人口。我将如何创建一个继承该州实例人口的城镇实例?(暂时,我想 - 这只是一个例子。)或者我应该使用组合而不是继承?
我目前正在考虑的方式,这应该有效:
s = State()
s.population = 10
t = Town(s)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-141-00f052d998f0> in <module>()
----> 1 t = Town(s)
TypeError: object.__new__() takes no parameters