我是OOP和Python的新手。几乎所有我知道的是自学成才的,所以如果你能提供一些链接供我阅读,我将不胜感激,因为我不知道我应该寻求什么确切的术语来澄清我的疑惑。类,隐藏属性和继承
这是我到目前为止的代码:
class Point(object):
x = 2
y = 3
def __init__(self, x, y):
self.x_a = x
self.y_b = y
class RectPoint(Point):
def __init__(self, x, y):
self.x_1 = x
self.y_1 = y
self.dist = (x*x + y*y)**0.5
class CircPoint(Point):
pass
a = Point(3,4)
b = CircPoint(3,4)
c = RectPoint(3,4)
print a.x # 2
print a.y # 3
print a.x_a # 3
print a.y_b # 4
print b.x # 2
print b.y # 3
print b.x_a # 3
print b.y_b # 4
print c.x # 2
print c.y # 3
print c.x_1 # 3
print c.y_1 # 4
print c.dist # 5.0
print c.x_a # AttributeError
print c.y_b # AttributeError
为什么是CircPoint
属性self.x_a
和self.y_b
不适用于类RectPoint
但可用?我将如何使它们可用?
此外,为什么self.x
和self.y
可用于两个类别RectPoint
和CircPoint
?
进一步阅读的链接也将赞赏(到位的解释)
我让更有经验的用户详细解释;但用几句话来说,'a'显然有它应有的一切; 'b'是一个'CircPoint',它继承了'Point'的所有内容,并且什么也没加,所以它拥有'Point'所有的东西。另一方面,'c'是一个'RectPoint',一个从'Point'继承'x'和'y'的类,但是你定义了一个不同的'__init__'方法 - 所以这覆盖了原始类的方法。 – Roberto 2014-10-08 16:50:19