在java,c#類的成員修飾符包括,公有、私有、程式集可用的、受保護的。 對於python來說,只有兩個成員修飾符:公有成員,私有成員 成員修飾符是來修飾誰呢?當然是修飾成員了。那麼python類的成員包括什麼呢? python成員: 欄位,方法,屬性 每個類成員的修飾符有兩種: 公有成員:內部外部 ...
在java,c#類的成員修飾符包括,公有、私有、程式集可用的、受保護的。
對於python來說,只有兩個成員修飾符:公有成員,私有成員
成員修飾符是來修飾誰呢?當然是修飾成員了。那麼python類的成員包括什麼呢?
python成員:
欄位,方法,屬性
每個類成員的修飾符有兩種:
- 公有成員:內部外部都能訪問
- 私有成員:欄位前面加兩個_,比如:__cc,只有自己的類內部能訪問,繼承的父類,子類均不能訪問.
一、私有成員:
只能類自己本身成員內部可以訪問
1.修飾普通欄位
欄位前面加__ ,該欄位就變成了私有欄位了,私有欄位只能在類的內部訪問
class Foo:
def __init__(self,name):
self.__name = name #私有欄位
def f1(self):
print(self.__name)
obj = Foo('alex')
#print(obj.__name) #不能這樣訪問
obj.f1()#類的私有欄位只能在類的內部進行訪問,不能在類的外部進行訪
#輸出
alex
如果在外部訪問就會報錯:
class Foo:
def __init__(self,name):
self.__name = name
def f1(self):
print(self.__name) #self.name 在類的內部訪問
obj = Foo('baidu')
print(obj.__name) #self.__name只能在類的內部訪問
輸出
2.修飾靜態欄位
class Foo:
__cc = "123" #創建私有靜態欄位
def __init__(self):
pass
@staticmethod
def f3():
print(Foo.__cc)
Foo.f3() #使用類訪問,也可以使用實例對象訪問
#輸出
123
使用實例對象訪問:
class Foo:
__cc = "123" #創建私有靜態欄位
def __init__(self):
pass
def f3(self):
print(Foo.__cc)
obj = Foo()
obj.f3() #使用實例對象訪問
二、公有成員:
公有成員的特征是:可以在類的內部訪問,也可以在類的外部訪問
1、修飾類的普通欄位
class Foo:
def __init__(self,name):
self.name = name
def f1(self):
print(self.name) #self.name 在類的內部訪問
#學習中遇到問題沒人解答?小編創建了一個Python學習交流群:725638078
obj = Foo('baidu')
print(obj.name) #self.name在類的外部可以訪問
obj.f1()