面向对象 一

Posted cherish937426

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象 一相关的知识,希望对你有一定的参考价值。

面向对象(OOP)

1 什么是面向对象

面向对象是一种编程思想,是前辈们的经验,可以指导程序员如何写出更好的程序

核心是对象,程序就是一系列的对象的集合,程序员负责调度控制这些对象完成任务

例如;

现在我要将大象装进冰箱中

我可以找一个会这项技能的人来装大象

我只需要负责找到会这项技能的人

总结;在面向对象的过程中,程序员的角度发生了改变,从原来的执行者,变为了指挥者

注意一点,对象不是凭空产生的,是需要我们自己设计的

2优点

1 可扩展性强(比如,如果添加功能,可以不会影响其他功能)

2 重用强(可以一直重复利用)

3 灵活性强()

3 缺点

1 程序的复杂度提高了

2 结构无法预知了

面向对象,面向过程的使用场景

面向对象的使用场景;对于一些扩展性强的程序,直接面向对象的

面向过程的使用场景;对于一些扩展性差的程序,比如,linex内核

类 和对 象

1 什么是类

内就是,内型,内别,是一种抽象的概念,是一系列具备相同特征和相同行为的对象结合

2 什么是对象

就是具体存在的某个事物,具备自己独特的特征,和行为,对象就是特征和技能的结合体

3 类和对象的关系

类包含对象,而对象是属于某个类的

在生活中,是先有对象,再有类的

在程序中是现有类,在有对象的

创建类和对象

创建类的格式语法

class 类的名字(需要建名知意,大驼峰命名规则):
    # 类的属性,即变量赋值
    # 类的技能,即函数

创建对象的格式语法

class Dog:
    pass
?
# 创建了一个对象
dog = Dog()

属性的写法

"""
属性是可以写在类中
写在类中的属性是公用的
?
属性也是可以写在对象中的
写在对象中的属性是对象独有的
?
如果类中和对象中都有一样的属性,先访问对象自身的,如果没有就访问类中的,如果都没有就报错
"""
# 例如
class Dog:
    # 类属性,公用的
    cloler = red
# 创建一个对象    
dog = Dog()
# 写对象属性
dog.name = "二哈"
dog.read = "黑白"

属性的增删改查

增加属性;

对象名.属性名 = 属性值

删除属性;

关键字 del 对象名.属性名

修改属性;

重新赋值给属性名(将原来属性值1,改为属性值2)

对象名.属性名1 = 属性值1

对象名.属性名1= 属性值2

查看属性

访问对象的所有属性

print(对象.__dict__)

访问对象的类信息

print(对象.__class__)

init 方法

叫做初始化方法,本质就是一个函数

特点1

当实例化对象时,会自动执行init方法

特点2

会自动将对象作为第一个参数传入,参数名为self,self可以是别名

class Dog:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
dog1 = Dog("二哈",12)
dog2 = Dog("金毛",12)
?

对象的精髓就是将数据,和处理数据的函数整合到一起,我们拿到的对象就同时拿到了数据,和处理数据的函数

注意;初始化方法不仅仅用来赋值,还可以执行其它代码

绑定方法

对象的绑定方法

在默认的情况下类中的方法就是对象绑定方法

就是在调用函数时,传入的第一个参数就是调用它的对象

如果用类来调用改方法,有几个参数就得传几个参数

class Dog:
    def __init__(self,name.age):
        self.name = name
        self.age = age
        
    def eat(self):
        print("eat")

类绑定方法

类绑定方法用@classmethod来装饰

特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数

什么时候绑定给对象:当函数逻辑需要访问对象中的数据时

什么时候绑定给类:当函数逻辑需要访问类中的数据时

非绑定方法

或叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据

语法:@staticmethod

不常用

 

 

 

以上是关于面向对象 一的主要内容,如果未能解决你的问题,请参考以下文章

224 面向对象编程介绍,面向过程与面向对象

第9天 面向对象

面向对象day07:面向对象和类

一 面向对象定义

面向对象笔记一

三十九python面向对象一