目录
public、protected、private类型
在Python中可以通过在变量属性以及方法属性是否有下划线“_”进行区分public、protected、private类型。
public类型
在python中数据和方法默认都是pubic类型的,此时方法和变量名都没有下划线。
1、 xx 没有以下划线开头的变量或者方法是public类型。
2、public类型可以被子类、类内以及类外被访问。
protected类型
1、 _xx 以单下划线开头表示的是protected类型的变量或者方法。
2、保护类型只能允许其本身与子类进行访问。
private类型
1、 __xx 双下划线表示的是私有类型的变量或者方法。
2、private类型只能允许类内进行访问。
实例
定义父类
class human:
first_name = '明'
last_name = '小'
age=13
_height=180
__weight=50
sex="M"
def __init__(self,fname="xiao",lname="ming"):
self.__first_name=fname
self.last_name=lname
@property #@property是把类中的方法变成属性来来进行调用的。
def get_l_name(self):
return self.last_name # + self.__first_name
def get_f_name(self):
return self.first_name
def get_height(self):
return self._height
def get_weight(self):
return self.__weight
def set_l_name(n):
self.last_name=n
return 0
def set_f_name(f):
self.first_name=f
return 0
def set_height(h):
self._height=
return 0
def set_weight(w):
self.__weight=w
return 0
定义子类
class student(human):
netw=0
math=0
sno="12345678"
def __init__(self,sno="1234567890"):
self.sno=sno
def get_sno(self):
return self.sno
def set_netw(self,netw):
self.netw=netw
return 0
def set_math(self,math):
self.math=math
return 0
def get_math(self):
return self.math
def get_netw(self):
return self.netw
实例化
xiaoming = student()
print(xiaoming.get_l_name) #@property是把类中的方法变成了属性
print(xiaoming.get_f_name()) #直接使用父类的方法 public
print(xiaoming.last_name) #直接访问父类的属性 public
print(xiaoming._height) #直接访问父类的属性 protected
#print(xiaoming.__weight) #不能直接访问父类的私有属性
print(xiaoming.get_weight())
print(xiaoming.get_height())
print(xiaoming.set_math(100))
print(xiaoming.get_math())