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

    面向对象

      也是一种编程思想

      核心是对象

      什么是对象:对象是特征和行为的结合体

      

      面向对象编程:关注的是使用什么样的对象可以完成我的任务

        优势:1.对于指挥者来说 不需要再关心具体步骤

           2.扩展性,一个单独的个体的特征或行为发生变化时 不会影响到别人

        缺点:1.程序的复杂度变高,你得需要设计这个些对象,注意要避免过度设计的问题

           2.程序的执行结果可控性低

    类与对象

      类就是分类 类型的意思

      定义:一堆具备相同特征和行为的事物的抽象概念,不实际存在

      

      类的作用:用于描述该类的对象具备什么样的特征和行为


      语法:class关键字 类名

      类名规范 大写开头 驼峰命名法

      

      在定义阶段

      只要包含该类的py被执行 就会做两件事情

      1.创建类的名称空间

      2.执行代码 将产生的名称放入名称空间

      

         
    class Student:
        school='Oldboy'
        name= 'xia'
        age = 19
    
        def func(a):#通过函数来描述该类对象的行为
            print('hello')
    
    #使用类中的属性
    print(Student.__dict__)
    print(Student.name)
    
    #使用类中的函数
    print(Student.func)
    
    #使用类直接调用类中函数时,与普通函数没有区别 self仅仅是一个位置函数
    Student.func(10)
    View Code

    对象的使用

    class Student:
        school = '复旦大学'
        
        #创建对象
        #语法:在类名后加括号 与调用函数写法相同
    stu = Student()
    
    #修改属性的值
    stu.school = '北大'
    print(stu.school)
    
    增加属性
    stu.number = '1000'
    print(stu.number)
    
    #删除属性
    del stu.number
    
    #对象与类的名称空间是独立的
    #对象的属性查找顺序
    对象的名称空间->类的名称空间
    View Code

    __init__函数

      __init__称之为初始化函数 它会在创建对象的时候自动执行
    
      创建对象时
    
      1.创建一个空对象
    
      2.执行__init__函数 并且自动传入了这个对象
    
       作用就是为对象的属性赋予初始值
    class Dog:
        def__init__(self,name,age,color):
        self.name=name
        self.age=age
        self.color=color
    
    dog1 = Dog('二黑',18,'黑色')
    print(dog1.__dict__)
    View Code
    强调
    1.使用场景 需要为每个对象定制不同的属性值
    2.__init__在创建对象后自动执行
    3.第一个self参数 指的是这个对象本身 不需要手动传值

    绑定方法

    绑定方式是对象与类中的某个函数的绑定关系

    class Person
        country = 'China'
        
        def__init__(self,name,age,gender):
            self.name = name
            self.age =age
            self.gender = gender
        
    
        def sleep(self);
            print('sleeping')
    
    p1=Person('xia','19','male')
    
    类调用
    Person.sleep(10)
    对象调用
    p1.sleep()
    
    对于类而言 sleep就是一个普通函数
    对对象而言 sleep是一个绑定方法
    View Code
  • 相关阅读:
    C#规范整理·异常与自定义异常
    C#规范整理·资源管理和序列化
    C#规范整理·泛型委托事件
    C#规范整理·集合和Linq
    <抽象工厂>比<工厂方法>多了啥(区别)
    <工厂方法>比<简单工厂>多了啥(区别)
    Unable to start Ocelot because either a ReRoute or GlobalConfiguration
    MySQL服务安装
    mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法
    使用博客系统发生_STORAGE_WRITE_ERROR_错误
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9832063.html
Copyright © 2011-2022 走看看