【发布时间】:2016-02-21 15:56:23
【问题描述】:
我阅读了多篇关于 Python 中 OOP 的文章,但没有找到答案。 这是我的示例代码作为示例:
class Point(object):
"""basic point"""
def __init__(self, x, y):
self.x = x
self.y = y
class Circle(object):
"""basic circle object"""
def __init__(self,center,radius):
self.center = center #should be a point object
self.radius = radius
coord = Point(1, 2)
a = Circle(coord, 4)
b = Circle(4, 5)
如果我理解正确,这是有效的 Python 代码,但圆圈“b”没有以 Point 对象为中心。如果圆对象中有一个方法使用中心对象进行计算(例如计算圆的面积),则 b 对象将失败。我必须强制类型还是程序员有责任在实例化时提供预期的对象类型?
【问题讨论】:
-
@jonrsharpe:我不确定这是正确的副本。这个问题更像是“我是否必须实现类型检查”,但受骗者是“我如何实现类型检查”。
-
没错,更多的是关于我必须这样做。我认为最好检查对象定义中的类型,这样每次实例化它时都会更容易捕捉到我的错误,但我不确定它是否是 python 方式。