封装
广义的封装:
把方法和变量都封装在类里
比如人狗大战
规范创建对象
创建所有人的属性名都一致
把所有的方法装进一个角色里
狭义的封装:
在类的外部不能调用,私有化了
# 举例 #广义的 # class Student: # def __init__(self,name): # self.name=name # # laowang=Student('老王') # print(laowang.name)
#狭义的封装 # class Student: # def __init__(self,name): # self.__name=name # 加上 __ 私有化 # # laowang=Student('老王') # print(laowang.__name) #作用:为了更好的限制用户,不能随便查看和修改,增加程序的安全性 # class A: # __val=[] # def __init__(self): # print(__val) # 类的内部可以调用 # # print(A.val) # 外部不能调用 # print(A.__val) # 外部不能调用 # class B: # def __aaa(self): # '私有化方法,相当于把方法保护起来了' # print('aaa') # # def func(self): 定义一个方法调用 # self.__aaa() # # b=B() # b.aaa() # b.__aaa() # b.func() # 可以使用方法调 # 总结:在类的内部,属性、类变量、实例方法都可以变成私有的,一旦变成私有的,就只能在类的内部使用
#查看私有变量的名字如何改变 # class A: # __abc=123 # 底层偷偷改了名字 _A__abc # # print(A.__dict__) #查看
私有变量不能被继承
#私有练习题 # class A: # def __func(self): # _A__func # print('in A') # # class B(A): # def wahaha(self): # self.__func() # _B_func # # b=B() # b.wahaha() #报错 调用不了 class A : def __init__(self): # 初始化 self.__func() # _A__func() def __func(self): # _A__func() print('in A') class B(A): def __func(self): print('in B') b=B() # 创建对象,先初始化,B类中没有初始化,到父类中去找 相同名字 # 输出 in A
#多态
# 在python中,一切皆对象,处处是多态
# 'ajsg'.split() 相当于 对象.方法名()
def func(a,b,c):
print(a,b,c)
func('1',True,[])
浙公网安备 33010602011771号