1. python封装三阶段:
第一阶段:将参数实例化到一个对象; 第二阶段:隐藏参数即私有参数;第三阶段:定义getter、setter方法,可以设定自己定义的规则
2. 私有属性和私有方法。用两个下划线开头表示私有,例如: __aaa。只能在类的内部调用,不能在类的外部调用
3. 示例:
# 封装的第一个阶段:
class User:
def __init__(self,name,age,address,course,grade=None):# 如果保证每个参数不丢失,都有一个默认值 grade=None
self.name=name
self.age=age
self.address=address
self.course=course
self.grade=grade
u=User("1",2,3,4,5)
print(u.name)
# 封装的第二个阶段: 将参数作为隐性
class User2:
def __init__(self,name,age,address,course,grade=None):
self.__name=name #前边两个下划线,表示私有,希望参数不被修改.
self.__age=age
self.__address=address
self.__course=course
self.__grade=grade
def __hai(self,msg): #私有方法
print(msg)
__count=1
def pub(self):
print("pub")
print("=============u22")
u1=User2("uu2",2,3,4,5)
# print(u1.name) #这个是获取不到的
print(u1._User2__name) #前边一个下划线,表示私有访问
u1._User2__hai("---")
print(u1._User2__count)
u1.pub()
# 封装的第三个阶段: getter setter
class User3:
def __init__(self,name,age,address,course,grade=None):
self.__name=name
self.__age=age
self.__address=address
self.__course=course
self.__grade=grade
def get_name(self):
return self.__name
def set_name(self,name):
if isinstance(name,str):
self.__name=name
else:
self.__name=str(name)
def get_age(self):
return self.__age
def set_age(self,year):
self.__age=2021-year
print("=============u1")
u3=User3("xiaowang",2,3,4,5)
# print(u3.name) #这个是获取不到的
print(u3.get_name())
u3.set_name("xiaogang")
print(u3.get_name())