面向对象编程(Object Oriented Programming )简写OOP

相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法

  • 1.在完成摸一个需求前,首先要确定职责 — 要做的的事情(方法)

  • 2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)

  • 3.最后完成代码,就是顺序的让不同的对象调用不同的方法

面向对象的特点:

  • 1.注重对象和职责,不同的对象承担不同的职责

  • 2.更适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路

  • 3.需要在面向过程的基础上,在学习一些面向对象的语法

类和对象

类和对象是面向对象编程的两个核心概念

类:

  • 类 是对一群具有 相同特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用

     特征 被称为 属性
     行为 被称为 方法
    
  • 类 就相当于制造飞机时的 图纸,是一个 模板,是 负责创建对象的 对象:

    对象 是由类创建出来的一个具体存在,可以直接使用

  • 是由哪个类创建出来的 对象,就拥有在 哪一个类 中定义的:
    属性
    方法

  • 对象就相对于 图纸制造的飞机

  • 在程序开发中,应该先有类,再有对象

类和对象的关系

  • 类是模板, 对象是根据类这个模板创建出来的,应该先有类,再有对象

  • 类只有一个,而,对象有很多个

  • 不同的对象之间的属性可能会各不相同

  • 类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少

类的设计

在程序开发中,要设计一个类,要满足三个要素:

  • 1.类名 这类事物的名字,满足大驼峰命名法

         大驼峰命名法:
             1.每个单词的首字母大写
             2.单词与单词之间没有下划线
    
  • 2.属性 这类事物具有什么样的特征

  • 3.方法 这类食物具有什么样的行为

类名的确定

  • 名词提炼法 分析整个业务流程,出现的名词,通常就是找到的类
    属性和方法的确定

  • 对 对象的特征描述,通常可以定义成属性

  • 对象具有的行为(动词),通常可以定义为方法

         提示:需求中没有涉及的属性或者是方法在设计类时,不需要考虑
    

面向对象基础语法

  • dir内置函数

  • 使用内置函数dir传入标识符/数据,可以查看对象内的所有属性及方法

提示:_ _方法名 __ 格式的方法是python提供的内置方法/属性
验证了函数也是对象,对象是由对象的方法或是属性的

def aaa():
    pass
print(dir(aaa()))
#结果:['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

引用的概念:

  • 在面向对象开发中,引用的概念是同样适用的!

  • ·在python中使用类创建对象之后,tom变量中仍然记录的是对象在内存中的地址

  • ·也就是tom变量引用了新建的猫对象

  • ·使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(16进制表示)
    提示:在计算机中,通常使用16进制表示内存地址

     		·十进制和十六进制都是用来表达数字的,只是表示的方式不一样
     		·十进制和十六进制的数字之间可以来回转换
     		       		 ·%d 可以以10进制输出数字
     		       		 ·%x 可以以16进制输出数字
    

在这里插入图片描述
在这里插入图片描述

class Cat:
    def eat(self):
        print("小猫哎吃鱼")
    
    def drink(self):
        print("小猫要喝水")

tom = Cat()
tom.eat()
tom.drink()
print(tom)
print("%d"%(id(tom)))           #%d打印的是10进制的
print("%x"%(id(tom)))           #%X打印的是16进制的
#结果   (计算机中喜欢用16进制表示地址)
# 小猫哎吃鱼
# 小猫要喝水
# <__main__.Cat object at 0x03161330>
# 51778352
# 3161330
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐