面向对象编程day1

1.面向过程编程与面向对象编程.

①面向过程编程:

是一种编程思想,就是前辈程序员发现的一种比较号的编程方法
过程指的是 先干什么 再干什么,完成一个事情所有的具体步骤
优点:把复杂的问题流程化,简单化,降低开发难度
缺点:扩展差, 再当前这种情况下 用户需求千变万化 对扩展性要求非常高
使用场景:不需要扩展,或是对扩展性要求不高,例如linux内核,shell 脚本
案例: 把大象装进冰箱 需要几步
1.打开冰箱
2.装进大象
3.关闭冰箱
面向过程中我们关注的点是,完成这个任务,具体的步骤 一步一步去完成.
----------------------------------------------------------------------------------------------------------
②面向对象编程:
也是一种编程思想
核心是对象
什么是对象:在现实生活中实实在在存在的,具备自己的特征和行为的事物
反过来说 对象就是 特征和行为(技能)的结合体
如何来区分:如果能够准确的找到一个事物,它就是一个对象
面向对象编程:我们关注的点是.使用什么样的对象可以完成我的任务
例如:把大象装进冰箱,什么样的对象可以帮我完成这个任务,只要找到这个对象,命令它来做事情即可
你从一个操作者 变成了指挥者, 例如:西游记中的如来,他要完成一个传经,要把经书传到东土大唐取,
本来要自己去,但是太麻烦,所以找了唐僧师徒五个对象,来帮他完成这个任务

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

缺点: 1.程序的复杂度变高,你得需要设计这个些对象,注意要避免过度设计得问题
2.程序得执行结果可控性低
③类与对象
类就是分类 类型的意思
定义:一堆具备相同特征和行为的事物的抽象概念,不实际存在
先有类还是先有对象:
生活中:
生活中类怎么来的,是通过对象的特征和行为抽取而来,
所以是先有对象才有了类

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

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

语法

class关键字后跟类名,类名规范(大写开头,驼峰命名法)

class SHOldboyStudent:
# 描述该类对象的特征
school = "上海Oldboy"
name = "矮根"
age = 68
gender = "unknown"
  def say_hi(abc):
  print(abc)
  print("hello oldBoy")
 

在定义阶段
只要包含该类的py被执行 就会做两件事情
1.就会创建类的名称空间
2.执行代码 将产生的名称放入名称空间

使用类中的属性:

print(SHOldboyStudent.__dict__)

print(SHOldboyStudent.__dict__['name'])

print(SHOldboyStudent.name)

使用类中的函数
print(SHOldboyStudent.__dict__["say_hi"])
print(SHOldboyStudent.say_hi)
使用类直接调用类中函数时 与普通函数没有任何区别 位self仅仅是一个置参数
SHOldboyStudent.say_hi(10)

创建对象

class OldboyStudent:
(如果每个对象的这个属性都相同 才应该定义到类中 比如所有人的学校都是上海Oldboy)
school = "上海Oldboy"

语法: 在类名后加括号 与调用函数写法相同

stu = OldboyStudent()

访问对象的属性
 print(stu.school)
print(OldboyStudent.school)

修改属性的值
 stu.school = "北京Oldboy"
 print(stu.school)

增加属性
 stu.room_num = "1008"
 print(stu.room_num)

 删除属性
del stu.room_num
print(stu.room_num)

对象与类的名称空间是独立的,为对象的属性添加或修改值,不会对类中产生影响.

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

__init__函数

__init__称之为初始化函数 它会在创建对象的时候自动执行
 创建对象时
 1.创建一个空对象
 2.执行__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参数 指的是这个对象本身 不需要手动传值

原文地址:https://www.cnblogs.com/endlesswaltz/p/9830418.html