码迷,mamicode.com
首页 > 其他好文 > 详细

多态/封装

时间:2019-07-06 00:50:15      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:语言   对象属性   pytho   tuple   使用   self   子类   鸭子类型   强类型   

多态:python中处处是多态,无需这个概念
python是一种弱类型语言,变量的类型是可以改变的;不论什么类型,都可以传到函数中
在Java这种强类型语言中变量的类型是不可以变.
Java多态的体现:传一个变量,就需要在这个变量前加上类型名,Java没有多继承

python没有多态,有鸭子类型
鸭子类型:看着像鸭子,那他就是鸭子
class Str:
def index(self):
pass

class List:
def index(self):
pass

class Tuple:
def index(self):
pass

#鸭子类型,这些类中有一些相同功能的方法,那么名字就写的相同,这些方法相同使用也相同的类彼此之间互称为鸭子.


封装:广义的封装:实例化一个对象,给对象空间封装一些属性
狭义的封装:私有制,私有的概念
私有成员:私有静态字段(在静态字段名前加__),私有方法(在方法名前加__),私有对象属性(在属性名前加__)

对于私有静态字段而言,派生类不能访问,在类的外部都不能访问.只能在类的内部可以访问
对于私有方法而言,派生类不能访问,在类的外部都不能访问.只能在类的内部可以访问
对于私有属性而言,派生类不能访问,在类的外部都不能访问.只能在类的内部可以访问
一旦class语言定义执行,python在这个类的内部就把原来的私有成员名字改成了_类名+__私有成员名,这就意味着所有外面的按照代码去找私有成员都是找不到的.
即使内外两个类都有相同的私有成员,但是经过python内部的转化,就导致虽然看上去相同,但是不同的类内就有不同的前缀,还是不一样的.

多态/封装

标签:语言   对象属性   pytho   tuple   使用   self   子类   鸭子类型   强类型   

原文地址:https://www.cnblogs.com/shachengcc1/p/11141221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!