• 面向对象程序设计


    一、面向过程与面向对象             

    面向过程:

        优点:降低程序复杂度

        缺点:牵一发而动全身,不易扩展

        应用场景:很少改变的场景,比如linux kernel,git

    面向对象:

        优点:易扩展

        缺点:可控性差

        应用场景:互联网,游戏,企业内部软件

    二、类和对象                    

    描述:对象是特征(变量)与技能(函数)的结合,类是一系列对象共有的特征与技能

    类的作用:

              1.属性引用(类名.属性  可以增加或者删除属性)

              2.实例化对象

    类的定义

    class Chinese:
        country = 'China'
        def __init__(self,name,age):
            self.name=name #p1.name='egon'
            self.age=age #p1.age=18
    
        def talk(self):
            print('say chinese',self)
    View Code

    实例化对象

    p1=Chinese('egon',18) #__init__(p1,'egon',18)

    属性引用(增删改查)
    print(Chinese.country) #类的数据属性
    print(Chinese.__init__) #类的函数属性

    查看类的属性字典,或者说名称空间

    print(Chinese.__dict__) 

    对象

    p1=Chinese('egon',18) #__init__(p1,'egon',18)
    对象的属性

    点(.)的作用:从点左边的名称空间中找点右边的名字--有新名称空间产生

    print(p1.name)
    print(p1.age)
    print(p1.__dict__)
    print(p1.__dict__['name'])


    类型与类是统一的
    print(type(p1))

    p1=Chinese('egon',18) #__init__(p1,'egon',18)
    p2=Chinese('alex',1000) #__init__(p1,'egon',18)
    print(id(p1.country))
    print(id(p2.country))
    print(id(Chinese.country))

    绑定方法:绑定到谁身上,就是给谁用的,谁来调用就会自动把自己当做第一个参数传入

    总结

    定义在类内部的变量,是所有对象共有的,id全一样
    定义在类内部的函数,是绑定到所有对象的,是给对象来用,obj.func() 会把obj本身当做第一个参数出入

    对象:方法   -- 自动传值

    类:函数

    名字查找顺序

    print(p1.x) #先从p1.__dict__,找不到再找Chinese.__dict__,找不到就会报错

    类和对象的交互

    class Garen:
        camp='Demacia'
        def __init__(self,nickname,life_value=200,aggressivity=100):
            self.nickname=nickname
            self.life_value=life_value
            self.aggressivity=aggressivity
    
        def attack(self,enemy):
            enemy.life_value-=self.aggressivity
    
    
    class Riven:
        camp = 'Noxus'
    
        def __init__(self, nickname, life_value=100, aggressivity=200):
            self.nickname = nickname
            self.life_value = life_value
            self.aggressivity = aggressivity
    
        def attack(self, enemy):
            enemy.life_value -= self.aggressivity
    
    
    
    g=Garen('欧德博爱')
    r=Riven('矮里渴死')
    print(r.life_value)
    
    g.attack(r) #发送了一条消息,称为向g发送了attack指令
    print(r.life_value)
    View Code

    类的继承

    类的组合

    类的多态

    类的封装

    接口

    反射

  • 相关阅读:
    实战weblogic集群之创建节点和集群
    实战weblogic集群之创建domain,AdminServer
    linux配置端口转发
    Linux系统下用户行为审计
    实战weblogic集群之安装weblogic
    MongoDB主从配置
    安装配置MongoDB
    PHPCMS v9 自定义表单添加验证码验证
    实战Nginx与PHP(FastCGI)的安装、配置与优化
    在线客服兼容谷歌Chrome、苹果Safari、Opera浏览器的修改
  • 原文地址:https://www.cnblogs.com/geek-ace/p/6994617.html
Copyright © 2020-2023  润新知