zoukankan      html  css  js  c++  java
  • 面向对象-class(类)

    面向对象编程

     面向对象是一种思想,是包含面向过程的,例如:我们去买车:

    • 第一步:A地方 4s店 --> 买车
    • 第二步:B地方 保险公司 --> 上保险
    • 第三步:C地方 地税局 --> 交税
    • 第四步:D地方 交管所 --> 上牌照

    我们需要去到4个四个地方才可以把买车的整个流程走完,这样子属于是面向过程的,而面向对象编程是,我们有一个卖车处的地方,这里可以买车、上保险、交税、上牌照,到了这里只需要找到一个人给相对应的办理业务就可以了,这就是属于面向对象,属于是化零为整的过程。


    类:一个模型、一个例子。(如一个造汽车的图纸)

    实例/对象:通过模型造出的具体东西。(通过图纸造出来的汽车)

    实例化:把模型变成实例的过程。(通过通过造汽车的过程)

    class Car: #类:模型 【经典类】
    #定义类一般习惯性大写字母开头,小写字母也可以
        def run(self):#
            print('run。。。')
        def fly(self):
            print('fly...')
    
    bmw = Car() #实例化-第一个实例
    bmw.run()
    bmw.fly()
    
    benz = Car()#实例化-第二个实例
    
    #结果:
    run。。。
    fly...

     构造函数

    ——类在实例化的时候,会自动执行的函数。【 __init__】

     构造函数中,self .xxx = xxx,在别的函数中,就直接可以使用了,如下边的第二个函数 self.name。

    class Person(object): #新式类,Python3中和经典类没有区别,Python2中有区别
        def __init__(self,name,sex,color): #构造函数
            self.name = name
            self.sex = sex
            self.color = color
    
        def cry(self):
            print('%s cry...'%self.name)
    
        def fly(self):
            print('%s fly...'%self.name)
    
        def eat(self):
            print('color',self.color)
            print('eat...')
    brf = Person('brf','man','red')
    brf.eat()
    brf.cry()
    brf.fly()
    
    #结果
    color red
    eat...
    brf cry...
    brf fly...

     self : 本类对象

    ——self 就是实例化的变量,就是下边代码中的brf;原理分析:当我们在调用 cry()函数时,是需要传一个参数的,我们没有传参数,是因为在调用时,自动的语法转化了,把 brf  当作了参数,给到了self。

    class Person:
        def cry(self):
            print('self的内存地址',id(self))
    
    brf = Person()
    brf.cry()
    print('实例的内存地址',id(brf))
    
    #结果
    self的内存地址 1734936067184
    实例的内存地址 1734936067184

     析构函数

         ——实例被销毁的时候自动执行的函数。

    class Brf:
        def __del__(self): #析构函数
            print('__del__析构函数')
    
        def __init__(self):
            print('__init__ 构造函数')
    
        def fly(self):
            print('fly...')
    
    b = Brf()
    b.fly()
    
    #结果:
    __init__ 构造函数
    fly...
    __del__析构函数

     * 分析:因b是一个变量,当此次代码运行完了后,b就会被销毁,所以最后可以看到运行了析构函数。 

     私有

    ——不是公共的,只能在类里面的函数调用,在类外边不可以调用;创建后,不想要他人在外部操作了,可以使用私有

    ——把一个函数的变量名字前边加两个【下划线 __】,这个函数就是私有了

    class Person(object): 
        def __init__(self,name,sex,color): 
            self.name = name
            self.sex = sex
            self.color = color
    
        def cry(self):
            print('%s cry...'%self.name)
    
        def fly(self):
            print('%s fly...'%self.name)
    
        def __eat(self): #私有
            print('color',self.color)
            print('eat...')
    brf = Person('brf','man','red')
    brf.eat()
    brf.cry()
    brf.fly()

    类 or 函数

     ——简单的功能,写函数

    ——复杂的功能,考虑使用类,如:

    1. 一键部署环境

    2. 共有10多个工程

    3. 从Git上拉最新的代码

    4. 替换配置文件

    5. 执行编译命令

    6. 删除原来的旧代码

    7. 重启工程

    import os
    
    class Deploy:
        build_home = '/home/niuhy/projects'
        def __init__(self,project_name,branch)
            self.project_name =project_name
            self.branch = branch
        def pull_code(self)
            os.chdir(self.build_home)
            command = "git clone https://gitee.com/little_fat_grain/%s.git -b %s" %(self.project_name,self.self)
            os.system(command)
        def replace_config():
            pass
        def backup():
            pass
        def build():
            pass
        def start():
            pass
        def main():
            self.backup()
            self.pull_code()
            self.replace_config()
            self.build()
            self.start()
    
    d = Deploy('besttest_job','my_python')
    d.main() 

    Git代码链接查找:

     

  • 相关阅读:
    什么是内存碎片
    java堆内存模型
    java内存模型
    java垃圾回收过程
    找出给定的一个字符串中最长的不重复子串,不重复子串即一个子串中不出现两个相同的字符
    学习tomcat(八)
    学习Redis(二)
    学习k8s(四)
    学习docker(三)
    学习MySql(一)
  • 原文地址:https://www.cnblogs.com/brf-test/p/14762214.html
Copyright © 2011-2022 走看看