python的繼承
子類更新成員變數,但是父類的成員變數不會隨之更新。
import random
class a:
def __init__(self):
self.x = 1
def update(self):
self.x = random.random()
class b(a):
def __init__(self):
super(b, self).__init__()
class c(a):
def __init__(self):
super(c, self).__init__()
a = a()
b = b()
c = c()
print('a', a.x, id(a.x))
print('b', b.x, id(b.x))
print('c', c.x, id(c.x))
c.update()
print('-' * 10)
print('a', a.x, id(a.x))
print('b', b.x, id(b.x))
print('c', c.x, id(c.x))
輸出結果如下。
a 1 1588685888
b 1 1588685888
c 1 1588685888
----------
a 1 1588685888
b 0.966045428000231 2041177252680
c 1 1588685888
疑問:繼承後,是各個類各用乙份記憶體來存變數嗎?
把上面的**,在初始化基類a的時候,x就直接用random來寫,其他不變,測試結果如下。
複習c++中相應的情況。
review:c++(13):多繼承(multiple inheritance)
據說,在c++中,「用派生類的方法修改基類的東西要用虛函式」。
子類繼承父類成員問題
子類不能從父類繼承的有 1.建構函式 2.拷貝建構函式 3.析構函式 子類能從父類繼承的有 1 靜態成員變數 2 靜態成員函式 3 友元函式 4 賦值操作符 過載函式 而private型別成員是可以被子類繼承的,只不過子類不能直接訪問,需要相應的set get函式。class father clas...
子類繼承父類的成員變數
1 子類可以繼承父類的成員變數 只能繼承public 和protected,不能private 2 子類拿到的父類的成員變數值是初始化的值。3 如下面classb繼承classa,只能拿到初始化的a的值。int classa a 0 int main class classa include std...
py 子類繼承父類
class 派生類名 基類名 usr bin python coding utf 8 class parent 定義父類 parentattr 100def init self print 呼叫父類建構函式 defparentmethod self print 呼叫父類方法 defsetattr s...