私有化
x: 公有變量
_x: 單前置下劃線,私有化屬性或方法,from somemodule import *禁止導(dǎo)入,類對(duì)象和子類可以訪問(wèn)
_xx:雙前置下劃線,避免與子類中的屬性命名沖突,無(wú)法在外部直接訪問(wèn)(名字重整所以訪問(wèn)不到)
xx:雙前后下劃線,用戶名字空間的魔法對(duì)象或?qū)傩浴@?init , __ 不要自己發(fā)明這樣的名字
xx:單后置下劃線,用于避免與Python關(guān)鍵詞的沖突
父類中屬性名為名字的,子類不繼承,子類不能訪問(wèn)
如果在子類中向名字賦值,那么會(huì)在子類中定義的一個(gè)與父類相同名字的屬性
_名的變量、函數(shù)、類在使用from xxx import *時(shí)都不會(huì)被導(dǎo)入
屬性property.
1:私有屬性添加getter和setter方法
class Money(object):
def __init__(self):
self.__money = 0
def getMoney(self):
return self.__money
def setMoney(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型數(shù)字")
2:使用property升級(jí)getter和setter方法
class Money(object):
def __init__(self):
self.__money = 0
def getMoney(self):
return self.__money
def setMoney(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型數(shù)字")
money = property(getMoney, setMoney)