python--面向对象:多态与封装

一、多态 :python 天生支持多态
多态指的是一类事物有多种形态 eg:文件有多种形态:文本文件,可执行文件
鸭子类型:python中崇尚鸭子类型,不崇尚根据继承所得来的相似
优点 : 松耦合 每个相似的类之间都没有影响
缺点 : 太随意了,只能靠自觉
#eg序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系
#eg:如果两个类刚好相似,并不产生父类的子类的兄弟关系,而是鸭子类型
#eg:list tuple 这种相似,是自己写代码的时候约束的,而不是通过父类约束的
举例
class Tuple:
    def __len__(self):
        return 'aaa'
class List:
    def __len__(self):
        return 'qqq'
def len(a):
    return a.__len__()
l=list()
len(l)
二、封装: 隐藏对象的属性和实现细节,仅对外提供公共访问方式。
# 【好处】
"""
1. 将变化隔离;
2. 便于使用;
3. 提高复用性;
4. 提高安全性;
"""
# 【封装原则】
"""
      1. 将不需要对外提供的内容都隐藏起来;
      2. 把属性都隐藏,提供公共方法对其访问。
"""
class Person:
    __key=123    # 私有 静态属性
    def __init__(self,name,passwd):
        self.name=name
        self.__passwd=passwd    # 私用 动态属性
    def __get_passwd(self):    #私有方法
        return self.__passwd
    def login(self):
        self.__get_passwd()      #支持每部调用查看
#私有方法不能再外部调用,但是我们也是可以加上类名就能调用了,但是不建议使用
join=Person('join',123)
print(join._Person__passwd)    #123

三、小结

# 所有的私有 都是在变量的左边加上双下划綫
    # 对象的私有属性
    # 类中的私有方法
    # 类中的静态私有属性
# 所有的私有的 都不能在类的外部使用
原文地址:https://www.cnblogs.com/zzy-9318/p/8324017.html