好了,我们最后看一看面向对象的第三大特性,封装!
不管你写的是类属性还是对象属性,对象方法还是类方法,外界都可以随意调用,所以我们要用到封装,想用的时候给外界一个接口,具体内部不让别人知道~
(PS:当然,内部是可以使用的)
封装:在前面加两个下划线。
class A():
__name = "zs"#类属性 _A__name
__asd__ = "ls"
_asd = "ls"
def __init__(self,age):# self._A__age
self.__age = age#对象属
@staticmethod
def __a(): #_A__a()
print("类方法中的静态方法",A.__name)
def __aa(self): #self._A__aa()
print("对象方法")
#内部调用
def get_age(self):
return self.__age
def set_age(self,age):
if age>150 or age<0:
print("非法年龄")
else:
self.__age = age
@staticmethod
def get_name():
return A.__name
@staticmethod
def set_name(name):
if isinstance(name,str):
A.__name = name
else:
raise TypeError("类型错误,非str类型不能赋值")
A.set_name("李宏宇")
print(A.get_name())
a = A(18)
a.set_age(21)
print(a.get_age())
#print(A._A__name)
#A._A__a()
#a = A(18)
#print(a._A__age)
#a._A__aa()
#print(A.__asd__)#所以后面不能加两个下划线
#print(A._asd)#前面加一个也不行
不懂的话,自己挨个试试,就好了,多敲哦~