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

    # 封装
    # 对外部隐藏具体的实现细节, 只提供简单的调用接口, 如USB接口
    # 在类中, 用双下划线, 封装属性或方法, 外部不能调用, 不能继承
    # 例:
    def __test(self):  # 私有方法
        pass
    
    __name = 'lee'  # 私有属性
    
    
    # 继承
    # 将一些共同代码抽取成一个类, 需要用的继承就可以, 就可以在自己的类里面使用
    # 实现代码的复用, 减少代码冗余
    
    # 例:老师和学生都是人,都会吃饭和睡觉.
    
    class Person:
    
        def eat(self):
            print('eat')
    
        def sleep(self):
            print('sleep')
    
    class Student(Person):
        pass
    
    class Teacher(Person):
        pass
    
    
    
    
    # 多态
    # 一个类或方法, 会根据调用者的不同, 产生不同的结果.
    #
    print(type('str'))
    print(type(123))
    
    
    # 组合
    # 由于类和类之中可能不存在关联关系, 所以不能继承, 这时就可以用组合
    # 将一个类的实例, 以参数的形式传入另一个类中, 这样, 另一个类的对象, 通过实例, 就可以直接调用实例中的方法或属性
    # 如: 学生和手机, 学生拥有手机, 但学生不是手机, 所以, 就可以用组合
    #
    # 例:
    #
    # 创建电话类
    class Phone:
        def send_text(self):
            print('send_text')
    
    # 创建学生类
    class Student:
        # 让学生拥有电话
        def __init__(self, name, phone):
            self.name = name
            self.phone = phone
    
    # 创建电话
    phone = Phone()
    # 创建学生,并将电话传给学生
    stu = Student('lee', phone)
    
    # 学生就可以用电话发短信了
    stu.phone.send_text()
    
    

    # 反射机制
    class Person: def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender p = Person("jack",18,"man") # print(p.name) # print(hasattr(p,"name")) # if hasattr(p,"name"): # 判断某个对象是否存在某个属性 # print(getattr(p,"names",None)) # 从对象中取出属性,第三个值位默认值 当属性不存在是返回默认值 # 为对象添加新的属性 setattr(p,"id","123") print(p.id) # # 从对象中删除属性 # delattr(p,"id") # print(p.id) print(getattr(p,'gender'))
  • 相关阅读:
    CSS 之 样式优先级机制
    SQL Server 之 修改时不允许保存更改
    IP_TOS选项
    eXosip2代码分析
    Ubuntu下关闭apache和mysql的开机启动
    linphone3.4.0代码分析
    XMPP/Jingle Vs SIP/SIMPLE 的简单介绍
    git命令常见问题总结
    正向代理与反向代理的区别
    SIP中OPTIONS方法的用法及示例
  • 原文地址:https://www.cnblogs.com/hellozizi/p/12043957.html
Copyright © 2011-2022 走看看