Python類的重寫和私有變數

2021-08-10 12:18:24 字數 1873 閱讀 4947

class parent(object):  # 定義父類的時候,一定要寫繼承object類,否則會報錯

name = 'parent'

*** = 'f'

def

__init__(self

,address,age):

self.address = address

self.age = age

# print('my name is '.format(self.name))

def

get_name(self):

return

self.name

def

get_***(self):

return

self.***

class child(parent):

name = 'child'

*** = 'm'

def

__init__(self

,address,age):

# 單繼承時super()和__init__()實現的功能是類似的

# parent.__init__(self,address,age)

# 實現父類的構造器中的方法,多重繼承時建議使用super可以避免__init__重複呼叫

super(child,

self).__init__(address,age)

# print('my name is '.format(self.name))

def

hello(self):

print('hello world')

a = child('chengdu'

,100) # 當例項化乙個類時,__init__下的方法會自動執行

print(a.address)

print(a.age)

# 從super()方法可以看出,super()的第乙個引數可以是繼承鏈中任意乙個類的名字,

#  如果是本身就會依次繼承下乙個類;

#  如果是繼承鏈裡之前的類便會無限遞迴下去;

#  如果是繼承鏈裡之後的類便會忽略繼承鏈彙總本身和傳入類之間的類;

執行結果:

chengdu

100

class a(object):

_name = 'feng'

# 受保護的變數,只允許本身和子類進行訪問,

# 當使用「from xx import *」時不會將帶乙個下劃線的物件引入

__*** = 'f'

# 雙下劃線的表示的是私有型別(private)的變數,只允許該類本身進行訪問,外界無法訪問

def

hello(self): # 類方法必須包含引數 self

print(self._name)

print(self.__***)

def

get_***(self): # 需要操作私有變數時,需要自己在類中寫get/set等方法

return

self.__***

a = a()

print (a._name)

# print (a.__***) # 報錯,例項不能訪問私有變數

print(a._a__***) # python不允許例項化的類訪問私有資料,

# 但可以使用 object._classname__attrname 訪問屬性

a.hello()

print(a.get_***())

# 說明:__xx__: 定義的是特殊方法,一般是系統定義名字 ,類似 __init__() 之類的,

# 只有當文件有說明時使用,不要自己定義這類變數

執行結果:

feng

ffengff

python類的重寫 私有變數

類的重寫 在python中 有時需要進行重寫,重寫是繼承機制中的乙個重要部分,可以重寫一般方法也可以重寫構造方法,構造方法是用來初始化新建立物件的狀態。class parent object name parent age 100 def init self print my name is par...

python類的私有變數和私有方法

usr bin env python coding utf 8 time 2017 11 08 8 46 author lijunjiang file class3.py 類的私有變數和私有方法 在python中可以通過在屬性變數名前加上雙下劃線定義屬性為私有屬性 特殊變數命名 1 xx 以單下劃線...

類的私有變數

1.在python 中可以通過在屬性變數名前加上雙下劃線定義屬性為私有屬性 特殊變數命名 案例 class a object zhe shi shuo ming name ling man def hello self print self.name print self.def get self ...