Expected behavior of class definition in python
我读了多篇关于Python中OOP的文章,但没有找到答案。下面是我的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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"没有一个点对象作为中心。如果圆对象中有一个方法使用中心对象进行计算(例如计算圆的面积),则B对象将失败。我必须强制类型还是程序员在实例化时提供预期的对象类型?
正如其他人所说,由您来强制输入。
然而,python广泛使用duck类型的概念,这意味着在您的例子中,您不一定需要一个
这意味着要做的最重要的事情是记录类提供的接口,以及每个函数或方法从其参数期望得到什么。
由您来强制类型,由调用者来提供正确的数据。
Python社区的一个基本理念是,我们都是负责任的程序员。如果强制类型以防止意外或恶意错误很关键,则必须将其构建到对象中。