Python 繼承,父類 子類成員變數記憶體分配

2021-09-22 08:22:00 字數 1553 閱讀 2105

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...