10.22语法 class 类 面向对象概念 类与对象 对象的使用 绑定方法

1.语法 class 类

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

如 class Xxxx:

  a=‘a’

  b=‘b’

  def say_hi(self):

    print(self)

    print('hello')

在定义阶段(只要包含该类的py文件被执行 就会做两件事)

1.创建类的名称空间

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

 

使用类中的属性

Xxxx.a

Xxxx.b

使用类中的函数

Xxxx.say_hi   使用类直接调用类中的函数时与普通函数没有什么区别  self仅仅是一个参数

 

2.面向对象概念

也是一种编程思想

核心是对象

 什么是对象:再现实生活中实实在在存在的,具备自己的特征和行为的事物
反过来说 对象就是 特征和行为(技能)的结合体
如何来区分:如果能够准确的找到一个事物,它就是一个对象

 面向对象编程:我们关注的点是.使用什么样的对象可以完成我的任务
例如:把大象装进冰箱,什么样的对象可以帮我完成这个任务,只要找到这个对象,命令它来做事情即可
你从一个操作者 变成了指挥者, 例如:西游记中的如来,他要完成一个传经,要把经书传到东土大唐取,
本来要自己去,但是太麻烦,所以找了唐僧师徒五个对象,来帮他完成这个任务

优势: 1.对于指挥者(程序员)来说,不需要再关心具体步骤
2.扩展性,一个单独的个体的特征或行为发生变化时 不会影响到别人

缺点: 1.程序的复杂度变高,你得需要设计这个些对象,注意要避免过度设计得问题
2.程序得执行结果可控性低

 

3.类与对象
类就是分类 类型的意思
定义:一堆具备相同特征和行为的事物的抽象概念,不实际存在
先有类还是先有对象:
生活中:
生活中类怎么来的,是通过对象的特征和行为抽取而来,
所以是先有对象才有了类

编程中:
必须是先有类 才能有对象,因为你必须先告诉程序,你这个对象有什么样的特征和行为

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

 

4.对象的使用    对象 与类的名称空间是独立的

创建对象:在类名后加括号   

访问对象的属性print(Xxxx.a)

修改属性的值:Xxxx.a='b'    为对象的属性赋予新的值 类中的属性不会变化

增加属性    

Xxxx.c='c'   为对象增加属性   类中也不会出现新的属性

删除属性

def  Xxxx.c

如果对象的属性是相同的 就放到类中 作为一个公共的数据

对象的属性查找顺序
对象自己的名称空间 -> 类的名称空间

 

__init__   称之为初始化函数  在创建对象的时候自动执行

创建对象时,创建一个空对象,执行函数时__init__并且自动传入了这个对象

该函数的作用,就是为对象的属性赋初始值
def __init__(self,name,color,age,gender):
  print("狗__init__执行了")
  print(self)
  self.name = name
  self.age = age
  self.color = color
  self.gender = gender

#1. 使用场景 需要为每个对象定制不同的属性值
#2.__init__在创建对象后自动执行
#3.第一个self参数 指的是这个对象本身 不需要手动传值

 

5.绑定方法


# 类调用与对象调用的区别
# 对于类而言 sleep就是一个普通函数
# 对对象而言 sleep是一个绑定方法

# 绑定方法是什么?
# 是对象与类中的某个函数的绑定关系 就像生活中 我们都会吃饭 我吃饭你不会饱
# 那么吃饭就是我自己的绑定方法

# 为什么要把函数进行绑定?
# 因为对象的行为 通常都需要访问这个对象的数据 或是修改这个对象的数据
# 如果没有对象 直接调用函数是没有意义的 在函数中访问不到对象的数据
# 所以将对象和函数进行绑定

# 特殊之处
# 在使用绑定方法时 不需要关心self参数 会自动将这个对象本身传进来
# 对象调用绑定方法时 最后执行的还是类中的那个函数

 

posted @ 2018-10-22 19:56  葛洪  阅读(207)  评论(0编辑  收藏  举报