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

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

    __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

      

  • 相关阅读:
    c语言中srand和rand函数 生成随机数总结
    枚举类型
    VS2008快捷键使用技巧
    PV实现同步
    PV操作(深入显出)
    数字在排序数组中出现的次数
    两个链表的第一个公共结点
    数组中的逆序对
    第一个只出现一次的字符位置
    丑数
  • 原文地址:https://www.cnblogs.com/mountian-lion/p/6105879.html
Copyright © 2011-2022 走看看