面向对象编程 类

1.面向过程编程(概念:)
核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么
基于该思想编写程序就好比在编写一条了流水线,是一种机械式的思维方式

优点:复杂的问题流程化,进而简单化

缺点:可扩展性差 现今社会客户的需求千变万化 对扩展性要求较高‘

使用场景:不需要扩展 或者是随扩展性要求不高,例如:linux内核,shell,
脚本

案例:工厂流水线

面向过程中我们关注的点,完成这个任务 具体的步骤 一步一步去完成

2.面向对象:
也是一种编程思想,什么是对象(在现实生活中实实在在存在的,具备自己特
征和行为的事物,反过来说 对象就是特征和技能的结合体)

如何来区分,如果能够精确的找到一个十五,他就是一个对象

核心"对象"二字,对象指的是特征与技能的结合体

基于该思想编写程序就好比在创造一个世界,你就是这个世界的上帝,是一
种上帝式的思维逻辑

优点:可扩展性强

缺点:编程的复杂度高于面向过程

面向对象编程:我们关注的点是,使用什么样的对象可以完成我的任务
例如:把大象装进冰箱,什么样的对象可以帮我完成这个任务;只要找到这个
这个对象,命令它来做事情,你从一个操作者 ,例如:西游记中如来完成传经的任务,
所以找了唐僧几个对象来完成

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

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








3.类与对象:

类就是分类 类型的意思
定义:一堆具备相同特征和行为的事物的抽像概念,不实际存在的

生活中:类怎么来的,是通过对象特征和行为抽取而来的,所以先要有对象再有类

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

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


4.python中的类
类的定义及其使用
#yufa :class关键字 类名
#类名规范 大写开头 驼峰命名法
class SH01dboyStudent:
#描述该类对象的特征
school="上海01dboy"
name="agon"
age=18
gender="unlnow"
#在定义阶段
#只要包含该类的py文件被执行 首先创建类的名称空间
#执行代码 将产生的名臣俄国放入名称空间
print("=============")

#描述该类对象的行为 通过函数
def say_hi(self):
print("hello oldBoy")


#使用类中的属性
print(SH01dboyStudent.__dict__)
print(SH01dboyStudent.name)
#使用类中的函数
print(SH01dboyStudent.say_hi)
#使用类直接调用类中的函数时 与嗲用普通函数没有任何取别 self仅
#仅是位置参数
SH01dboyStudent.say_hi(10)


5.创建对象和对象属性
对象中不许有一个指向类的名称空间的地址(如果自己里有 就拿自己的 没有就去找类中的)

#创建对象
#语法在类名后加括号 与调用函数写法相同
stu= SH01dboyStudent()
#访问对象属性
print(stu.school)
print(SH01dboyStudent.school)
#修改属性值
stu.school="北京01dboy"
print(stu.school)
#增加属性
stu.room_num=1008
print(stu.room_num)
#删除属性
del stu.room_num
print(stu.room_num)

#对象与类的名称空间是独立的
stu.school="北京01dboy"
stu.room_num=1008
print(stu.__dict__)
print(SH01dboyStudent.__dict__)

#如果对象的属性是相同的就应该放到类中 作为一个公共的数据
stu.school

#对象的属性查找顺序
#对象自己的名称空间==>类的名称空间
syul=SH01dboyStudent()
syul.school="深圳01dboy"
print(syul.school)
print(syul.__dict__)


class Dog:
#作为一只狗 应该有昵称 age color gender
#但是不能写到类中 因为每个狗是不一样的


#__init__称之为初始化函数 它会在创建对象的时候自动执行
#创建对象时
#1.创建一个空对象
#2.执行__init__函数 并且自动传入了这个对象

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

pass
dog1=Dog()
print(dog1)
dog1.name="大黄"
dog1.age="1"

dog2=Dog()
print(dog2)
dog2.name="二哈"
dog2.age="2"

#在创建对象时,传入参数
#类内部定义的函数 其实是给对象使用的 而且是绑定给对象用 绑定给不同的对象就是不同的绑定方法
dog1=Dog("大黄","黄色",2,"female")
print(dog1.__dict__)
#绑定方法的特殊之处在于,谁来调用 就会将随当作第一个阐述自动传入
dog2=Dog("二哈","白色",1,"female")
print(Dog(dog2))


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

#类的调用
Dog.sheep(10)
#对象调用
dog1.sheep()
#对于类而言 sleep就是一个普通函数
#对对象而言 sleep就是一个绑定方法
#绑定方法是什么’
#是对象与类中的某个函数的绑定关系 就像生活中 我们都会吃饭 你吃了我不会饱 不同的对象绑定关系的方式也不同
#问什么要把函数进行绑定 因为对象的行为通常都需要访问或修改这个对象的数据,如果没有对象直接调用函数是没
# 有意义的 在函数中是访问不到对象的数据 所以将函数和对象进行了绑定

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





猜你喜欢

转载自www.cnblogs.com/yanhui1995/p/9829611.html