zoukankan      html  css  js  c++  java
  • 组合,封装

    """
    class Mysql:
    def __init__(self,host, port, db, charset):
    self.host = host
    self.port = port
    self.db = db
    self.charset = charset

    def exc1(self,sql):
    conn = connect(self.host,self.port,self.db,self.charset)
    conn.execute(sql)
    return 123

    def exc2(self, proc_name):
    conn = connect(self.host,self.port,self.db,self.charset)
    conn.call_pro(proc_name)
    return 123


    sql1=Mysql('127.0.0.1',3306,'db1','utf8')
    sql1.exc1('select * from tb1;')
    sql1.exc2('存储过程的名字')
    """
    1.组合
      多个对象放在一起叫组合
      也可以降低代码的冗余
      在程序中一个对象将另一个对象作为自己的属性

    学生会增加各种各样的新的属性,比如手机,电脑,这样一来python类中会增加大量的属性和方法
    后期的维护成本非常高
    这时就是需要使用组合,来减少代码冗余
    继承是一种关系,学生是人类,老师是人类
    组合是对象之间的关系,学生对象拥有手机对象
    """
    class Phone:
    def __init__(self,phonenumber,operator,address):
    self.phonenumber = phonenumber
    self.operator = operator
    self.address = address

    def call(self):
    print("%s正在拨号:"%self.phonenumber)
    class Person:
    def __init__(self,name,sex,age):
    self.name = name
    self.sex = sex
    self.age =age
    class Student(Person):
    def __init__(self,name,sex,age,number):
    super().__init__(name,sex,age)
    self.number = number

    def select_cursor(self):
    print("%s正在选课、。。。"%self.name)

    def show_info(self):
    print(self.__dict__)
    class Teacher(Person):
    def __init__(self,name,sex,age,salary,level):
    super().__init__(name,sex,age)
    self.salary = salary
    self.level = level
    def set_score(self):
    print("%s正在为学生打分。。。"%self.name)

    stu = Student("乔峰","男",29,"23")
    p1 = Phone("2333333333","中国小米移动","上海浦东")
    stu.phone = p1
    stu.phone.call()
    """

    2.封装
      类似工厂,拿个纸箱,装入一堆产品,拿胶带封起来
      在程序中,封装的指的是将内容隐藏起来
      在面向对象中属性和方法可以被隐藏
      
      封装不是单纯的隐藏
      封装是指隐藏内部实现细节,对外提供使用接口

      1.提高安全性,cpu频率,缓冲区大小
      2.封装是为了明确区分内部和外部

      在属性或方法名称前加上两个下划线,就可以将其设置为私有的
      另外补充:python中权限只有两种,公开的(谁都能访问)和私有的(只有自己能访问)  
      封装特点:被隐藏的内容在内部可以直接访问,外部无法访问
      属性的封装,通过需要提供相应的设置器和访问器
    """
    class Student:
    def __init__(self,name,sex,age,idcard):
    self.name =name
    self.sex = sex
    self.age = age
    self.__idcard = idcard

    def sayHI(self):
    print("hello i am %s age is:%s sex is:%s"%(self.name,self.sex,self.age))

    def test(self):
    print(self.__idcard)

    def get_idcard(self,pwd):
    if pwd == "123":
    return self.__idcard
    else:
    print("错误啊")

    def set_idcard(self,pwd,new_idcard):
    if pwd == "123":
    self.__idcard = new_idcard
    else:
    print("你算个球")

    stu = Student("egon","男",20,"33012298828312313")
    stu.sayHI()
    # stu.test()
    # Idcard = stu.get_idcard("123")
    # print(Idcard)
    stu.set_idcard("123","23333333333")
    print(stu.get_idcard("123"))


  • 相关阅读:
    20199327 2019-2020-2 《网络攻防实践》第二周作业
    20199327 2019-2020-2《网络攻防实践》第一周作业
    20199327 《网络攻防实践》假期作业
    笔记
    20199327《Linux内核原理与分析》第十二周作业
    20199327《Linux内核原理与分析》第十一周作业
    第二周 测试
    DOS攻击——ICMP报文洪水攻击
    阅读《供应链的可信溯源査询在区块链上的实现》总结 (硕士论文)��
    阅读《基于区块链和用户信用度的访问控制模型 》总结
  • 原文地址:https://www.cnblogs.com/xuezhihao/p/10133425.html
Copyright © 2011-2022 走看看