• 面向对象之封装


    面向对象三大特性:封装,继承,多态

    __init__  # 封装:只要类名后面加(), 就会自动执行该类的__init__方法

    如下:

    class SQLHelper:
    
        def __init__(self, a1, a2, a3):     # 可以传参数,类() __init__自动被执行
            print('自动执行__init__方法')
            self.h_host = a1
            self.u_username = a2
            self.u_password = a3
    
        def fetch(self, sql):
            print(self.h_host)
            print(self.u_username)
            print(self.u_password)
            print(sql)
    
        def create(self, sql):
            pass
    
        def remove(self, nid):
            pass
    
        def modify(self, name):
            pass
    
    
    obj = SQLHelper('c1.salt.com', 'alex', '123')
    obj.fetch('what')
    View Code

    下面这个小需求反应了构造方法的实用之处:

    输入这个结果:

    小明 19 男 上山去砍柴
    小明 19 男 开车去东北
    小明 19 男 最爱大宝剑
    老李 90 男 上山去砍柴
    老李 90 男 开车去东北
    老李 90 男 最爱大宝剑

    class Person:
        def __init__(self, name, age, gender):
            self.name = name
            self.age = age
            self.gender = gender
    
        def kanchai(self):
            print(self.name, self.age, self.gender, '上山去砍柴')
    
        def qudongbei(self):
            print(self.name, self.age, self.gender, '开车去东北')
    
        def zuiai(self):
            print(self.name, self.age, self.gender, '最爱大宝剑')
    
    person_1 = Person('小明', '19', '')
    person_1.kanchai()
    person_1.qudongbei()
    person_1.zuiai()
    person_2 = Person('老李', '90', '')
    person_2.kanchai()
    person_2.qudongbei()
    person_2.zuiai()
    View Code

    这样比非面向对象的方法省略很多代码

     对象中封装对象:

    class C1obj:
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    
    class C2obj:
    
        def __init__(self, name, obj):
            self.name = name
            self.obj = obj
    
        def show(self):
            print(self.name)
    
    
    class C3obj:
    
        def __init__(self, aaa):
            self.aaa = aaa
    
    
    c1 = C1obj('aa', 11)
    c2 = C2obj('bb', c1)
    print(c2.obj.age)
    c3 = C3obj(c2)
    print(c3.aaa.obj.age)
    c3.aaa.show()
    View Code

      

  • 相关阅读:
    ffmpeg——压缩mav格式音频
    java控制台编译通过,运行出现找不到或无法加载主类的情况
    “Hello World!”团队——Final发布用户使用报告
    PSP总结报告
    软工第十二周个人PSP
    “Hello World!”团队第七周召开的第一次会议
    个人第十一周PSP
    互评Beta版本—博客园安卓APP
    sqlalchemy 学习笔记
    sqlite学习笔记
  • 原文地址:https://www.cnblogs.com/mountian-lion/p/6105879.html
Copyright © 2020-2023  润新知