我是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