• 面向对象基础


      今天学习了面向对象基础。

      概念:什么是面向对象?

      面向对象也是一种编程思想,其核心就是对象

      对象指的是现实生活中实实在在存在的物体,并且其具备独特的特征与行为,反过来可以理解为 特征与行为的结合体。生活中到处都是对象,如何判断一个事物是不是对象,就看你能不能通过特征和行为准确的找到它。

      举例:张三丰的女朋友

      错误:女朋友

      面向对象的优点是什么?

      ==提高扩展性==

      面向对象编程中,不需要再关心一个任务具体的实现步骤,只要找到一个具备这个功能的对象,并命令它执行功能即可,不难看出我们从一个操作者转变为一个指挥者,这之间有着天壤之别~

      就好想如来佛祖,需要有人完成取经这个任务,不需要他亲自参与每一个步骤的执行,只要找到唐僧师徒,让他们去完成即可,更重要的是,唐僧师徒每一个都是单独的个体,某个人的属性或行为发生变化不会影响到其他人,例如观音给了猴子三根猴毛,增加了他的打怪能力。

      面向对象中程序员就好想是上帝,需要什么就创造什么,要做事情就找相应的对象来做

      体现到程序中,就是提高了程序的扩展性,这也是我们之所以使用面向对象这种编程方式的原因。

      面向对象的缺点:

      程序复杂度提高,如果没有搞清楚使用场景,很容易出现过度设计问题

      要知道 扩展性并不是评判软件质量的唯一指标

      

      什么是类:

      类是一些具备相同特征和技能的事物的抽象概念,不实际存在

      举例:人类,植物类,动物类

      但是注意站在不同的角度会发现不同的类

      类和对象的关系

      在现实生活中,随着人类认知能力的发展,需要对事物进行分类

      ==是先有对象才有了类==

      而在编程的世界中,一定是先有类型才有对象,因为对象是行为和特征的集合体,如果不清楚有什么特征有什么行为,就不可能创造出对象,所以

      ==在程序中是先有类再有对象==

      实践:

      Python中类的操作

      1.定义类的语法

        class类名:

        注意:类名使用驼峰命名法  

    class oldboyStudent:
        pass

      2.定义类的属性

        类是用来描述对象的特征和行为

        那么类中应该包括两种内容

        1.变量属性  描述对象的特征

    name = '张无极'

        2.函数属性  描述对象的技能(行为)

    def say_hi(self):
        pass

        3.定义类是发生了什么

        该文件中被导入或被允许时,立即执行类中的代码,讲产生的名字存放在类的名称空间中

    print(oldboyStudent.__dict__)

        4.访问类中的属性

        可以通过名称空间访问

    print(oldboyStudent.__dict__['name'])
    print(oldboyStudent.__dict__['say_hi'])

        更推荐通过点来访问类中的变量和函数

    print(oldboyStudent.name)
    print(lodboyStudent.say_hi)

        调用类中的函数需要按照声明传入相应的参数

        self此时就是一个普通的参数名称

    print(oldboyStudent.say_hi('123456'))

        5.删除类属性

    del oldboyStudent.name

        python中对象的操作

        1.创建对象 在类名后面添加括号

    stu = oldboyStudent()

        2.访问对象的属性  通过点语法可以访问属性

    print(stu.name)

        3.为对象指定属性的值 也可以增加属性

        stu.name = '周芷若'
        stu.age = 20

        4.删除属性

    del stu.name

        __init__函数

        __init__函数称为初始化方法 会在创建对象后自动执行,我们可以使用它来定制对象的特征,我们不应该手动调用它

        

    def __init__(self,name,age):
        self.name = name
        self.age = age

        self参数表示刚刚创建的这个对象本身

        总结:init函数是在创建对象后立即执行,会自动传入对象本身

        对象,类的名称空间与属性的查找顺序

        1.创建对象时发生了什么

          创建空对象

          执行init函数并传入对象本身,和额外的参数

        2.对象中属性的查找顺序

          创建对象时会创建对象自己的名称空间

          查找顺序

          对象自身的名称空间->类的名称空间

          我们应该将所有对象共同的部分放在类中,不同的部分放到对象中

        绑定方法

          举例:

      class Person:

        country = "China"

        def __init__(self,name,age,gender):

          self.name = name

          self.age = age

          self.gender = gender

        def sleep(self):

          print('sleeping')

        def eat(self):

          print('eating')

      p1 = Person('矮根',68,'female')

      p2 = Person('高根',18,'female')

      

      p1.sleep()

      p2,sleep()

      Person,sleep(10)

      类调用类中函数与对象调用的区别

      对于类而言 sleep就是一个普通函数

      对对象而言 sleep是一个绑定方法

      绑定方法是什么?

      是对象与类中的某个函数的绑定关系 就像生活中 我们都会吃饭 我吃饭你不会饱

      那么吃饭就是我自己的绑定方法

      为什么要把函数进行绑定?

      因为对象的行为 通常都需要访问这个对象的数据 或是修改这个对象的数据

      如果没有对象 直接调用函数是没有意义的 在函数中访问不到对象的数据

      所以将对象和函数进行绑定

      特殊之处

      在使用绑定方法时  不需要关心self参数  会自动将这个对象传进来

      对象调用绑定方法时 最后执行的还是类中的那个函数

      对于类而言 

      一切皆对象

  • 相关阅读:
    谷歌地图API学习
    aspx net.2.0 C#获取IP,URL,浏览器,操作系统
    FLASH+Javascript 1,2,3,4数字标签显示图片
    yui cookie Dynamically Change Text Size Using Javascript 动态设置字体大小,写入Cookie
    [转]控制 Cookie 的作用范围
    C# 关于URL地址操作
    C#_采集
    关于C#_ArrayList的两篇文章
    未能找到存储过程_master.dbo.xp_regread
    [转]C#泛型有什么好处(转)
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/9830277.html
Copyright © 2020-2023  润新知