面向对象基础

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

  概念:什么是面向对象?

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

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

  举例:张三丰的女朋友

  错误:女朋友

  面向对象的优点是什么?

  ==提高扩展性==

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

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

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

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

  面向对象的缺点:

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

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

  

  什么是类:

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

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

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

  类和对象的关系

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

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

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

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

 

  实践:

  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参数  会自动将这个对象传进来

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

  对于类而言 

  一切皆对象

posted @ 2018-10-22 15:21  小菜鸟张阳阳  阅读(122)  评论(0编辑  收藏  举报