zoukankan      html  css  js  c++  java
  • day7_面向对象特性

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2019/7/12 14:50
    # @Author  : 大坏男孩
    # @File    : day7_面向对象特性.py
    # @Software: PyCharm
    # @license : Copyright(C), 未来集团有限公司
    # @Contact : 110@163.com
    
    """
    面向对象的特性:
        继承:1、在python里,面向对象的继承,叫多继承
              2、当子类继承父类后,子类调用属性时,先找自己的属性字典;
                 如果没有,再找父类的属性字典,父类没有就报错
              3、MRO继承顺序:广度优先。简单来说是从左到右。
                 通过 子类.mro 查看继承顺序
              4、如果类没有继承父类,默认继承object类
        多态:不同的对象调用相同的方法产生不同的结果
        封装:私有变量  -->格式1:_变量名  协议:当变量定义为私有变量时,不应该直接去访问它
                        -->格式2:__变量名  私有变量储存在属性字典时,会在变量名前拼接上 _类名
                           储存结果是  _类名__变量名
               私有函数  -->格式:__函数名
              1、把相似的类、相同的代码、相同的函数或者重复的代码,写成一个函数或者类
              2、把类的所有属性声明为私有属性,提供一个接口给访问者,访问者通过这个接口来访问类当中的属性
    """
    
    class I():
        jiayou = "加油"
        def add(self):
            print("我是我")
    
    class You(I):
        # jiayou = "come on"
        def add(self):
            print("你是你")
    
    print(You.jiayou)
    You.add(666)
    
    class A():      # A默认继承object类,等效于class A(object)
        def test(self):
            print("我是A")
    
    class B():
        pass
    
    class C(A):
        def test(self):
            print("我是C")
    
    class D(B):
        pass
    
    class E(C):
        def test(self):
            print("我是E")
    
    class F(D, E):
        pass
    
    class G(E):
        pass
    
    class I(E):
        pass
    
    class H(F, I, G):
        pass
    
    # 打印继承顺序,返回列表
    print(H.mro())
    
    # 多态:不同的对象调用相同的方法产生不同的结果
    class H2O:
        def __init__(self,name,temperature):
            self.name = name
            self.temperature = temperature
    
        def turn_ice(self):
            if self.temperature < 0:
                print("{}温度太低结冰".format(self.name))
            elif self.temperature in range(1,100):
                print("{}没有任何变化".format(self.name))
            else:
                print("{}温度太高变为水蒸气".format(self.name))
    
    class Water(H2O):
        pass
    class Ice(H2O):
        pass
    class Steam(H2O):
        pass
    
    w1 = Water("水",25)
    i1 = Ice("水",-20)
    s1 = Steam("水",666)
    
    w1.turn_ice()
    i1.turn_ice()
    s1.turn_ice()
    
    # 私有变量和私有函数
    class Sum():
        def __init__(self,value):
            self.__value = value
    
        def __add(self,x):
            return x + self.__value
    
        def network(self,x):
            """接口--访问者可以通过这个接口来访问类中的属性"""
            data = self.__add(x)
            return data
    和 = Sum(66)
    # print(和.__dict__)
    if __name__ == "__main__":
        n = Sum(30)
        print(n.network(5))
    
    # print(__name__)
    
    class NameGood:
        __a = 666666
        print(__a)
    
    # 打印NameGood类的属性字典
    print(NameGood.__dict__)
    
    # 调试程序:
    if __name__ == "__main__":
        # 打印NameGood类的私有变量__a
        print(NameGood._NameGood__a)
        # 新建一个对象namegood,没有参数
        namegood = NameGood()
        # 打印对象namegood的属性字典
        print(namegood.__dict__)
        # print(namegood.__a)
    

      

    一行代码一行诗
  • 相关阅读:
    C/S模式客户端连接服务器连接不上的问题
    C#获取网络状态
    SQL2008R转SQL2005
    Centos7 调整磁盘空间
    crontab 定时任务
    nginx 简单教程
    vagrant 使用
    加快 hive 查询的 5 种方法
    编译 ambari 2.7.3
    kylin 连接 hortonworks 中的 hive 遇到的问题
  • 原文地址:https://www.cnblogs.com/huainanhai/p/11185552.html
Copyright © 2011-2022 走看看