多态:指的是一类事物有多种形态,也就是一个对象的类型,动物有多种形态:人,狗,猪。
多态性:是指在不考虑实例类型的情况下都可以使用实例。
封装:面向对象的思想本身就是一种封装,让特有对象能够调用类中的方法,面向对象三大特性之一;
Python天生自带多态,有没有发现传什么类型的参数都可以?除非是本身不支持的,如迭代器,不可迭代的数据。有着强类型如“str+int”会给你报错,也有弱类型就比如多态,所以Python是一门动态类型语言,
1、证明Python天生是多态:
# 1、证明Python天生是多态: # 不管在传参的时候什么类型都可以什么对象ojbect、int/str/dict等等,对类型不敏感。 # 不像其它语言,接收参数要定义它的数据类型,入参类型不一致就会报错。 def func(a): return a print(func('asdasdasdasd')) print(func(123))
2、鸭子类型
Python中list 与 tuple 都有着相似的方法,并没有继承产生父类子类关系,称为:鸭子类型
# 2、鸭子类型 # list 与 tuple 都有着相似的方法,并没有产生父类子类关系,称为:鸭子类型 l = list l.index() l.count() t = tuple t.index() t.count()
多态中得到的总结:
封装:面向对象的思想本身就是一种封装,让特有对象能够调用类中的方法;
也就是面向对象的三大特性之一,属性与方法都看不到实际的对象数据。
1、登录账号例子:
并不知道实际的登录的是哪个账号密码是什么,所以我们面向对象封装了一个登录的类
# 1、登录账号例子: # 并不知道实际的登录的是哪个账号,所以我们面向对象封装了一个登录的类 class Login: def __init__(self, name, pwd): self.name = name self.pwd = pwd def login(self): return self.name+' 登录成功!' res_name = input('请输入您的账号') res_pwd = input('请输入您的密码') res_lg = Login(res_name, res_pwd) login = res_lg.login() print(login)
2、私有动态属性、私有方法、私有静态属性:
# 2、私有动态属性、私有方法、私有静态属性 class Login: __key = '666' # 私有静态属性 def __init__(self, name, pwd): self.name = name self.__pwd = pwd # 私有动态属性 def name(self): return self.name # 静态发方法:__get_pwd def __get_pwd(self):return self.__key+self.__pwd def login(self): # 类内部调用:self.__get_pwd() return self.name+' 登录成功! '+self.__get_pwd() res_name = input('请输入您的账号:') res_pwd = input('请输入您的密码:') res_lg = Login(res_name, res_pwd) print(res_lg.login()) print(res_lg.__dict__) # 但是也能看到它所有动态属性 print(res_lg._Login__pwd) # 但是也能看到它的属性 # print(res_lg._get_pwd()) # __get_pwd是私有方法类外部调不到
总结:
欢迎来大家QQ交流群一起学习:482713805 !!!
因篇幅问题不能全部显示,请点此查看更多更全内容