寒假自学(四)

希望所有温柔又可爱的人最后都能幸福❤

今日总结:

代码量 200行
博客量 一篇
所学时间 4小时左右
了解到的知识点 python面向对象基础

明日计划:

早上 python面向对象封装
下午 python面向对象封装
晚上

具体内容:

面向对象(OPP)

过程和函数

  • 过程是早期的一个编程概念
  • 过程类似于函数,只能执行,但没有返回值
  • 函数不仅能执行,还可以返回结果

面向过程的特点

  1. 注重步骤与过程,不注重职责分工
  2. 如果需求复杂,代码会变得很复杂
  3. 开发复杂项目,没有固定的套路,开发难度很大!

面向对象的特点

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

  1. 注重对象和职责,不同的对象承担不同的职责
  2. 更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
  3. 需要在面向对象基础上,再学习一些面向对象的语法

类和对象

  • 是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
    • 特征被称为属性
    • 行为被称为方法
  • 类就相当于制造飞机时的图纸,是一个模板,是负责创建对象的

对象

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

  • 哪一个类创建出来的对象,就拥有在哪一个类中定义的:

    • 属性
    • 方法
  • 对象就相当于用图纸制造的飞机

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

  • 只有一个,而对象可以有很多个
    • 不同的对象之间属性可能各不相同

在程序开发中,要设计一个类,通常需要满足以下三个要素:

  1. 类名这类事物的名字,满足大驼峰命名法
  2. 属性这类事物具有什么样的特征
  3. 方法这类事物具有什么样的行为

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

面向对象语法基础

python中对象无处不在,我们之前学的变量、数据、函数都是对象

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

  1. 定义一个猫类Cat
  2. 定义两个方法eatdrink
  3. 按照需求--不需要定义属性
class Cat:
    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫爱喝水")


tom = Cat()

tom.drink()
tom.eat()
print(tom)
addr = id(tom)
print("%x" % addr)

引用

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

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

在计算机中通常使用16进制表示内存地址

  • %d可以以10进制输出数字
  • %x可以以16进制输出数字

使用同一个类创建出来的对象并不是同一个对象

class Cat:
    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫爱喝水")


tom = Cat()

tom.drink()
tom.eat()

lazy_cat = Cat()

lazy_cat.eat()
lazy_cat.drink()
lazy_cat2 = lazy_cat
print(tom)
print(lazy_cat)
print(lazy_cat2)

方法种的self参数

  • self是调用该方法的对象的引用

    • 使用self.访问对象的属性
    • 也可以通过self.来调用其他方法
  • 在日常开发中,不推荐在类的外部给对象增加属性

    • 在运行时,如果没有找到该属性,程序会报错
  • 对象应该包含哪些属性,应该封装在类的内部

初始化方法:_init__init_是对象的内置方法

  • _init_方法是专门用来定义一个类具有哪些属性的方法!

使用类名创建对象时,会自动执行以下操作:

class Cat:
    def __init__(self):
        print("这是一个初始化方法")


tom = Cat()

初始化方法改造:

class Cat:
    def __init__(self, new_name):
        # print("这是一个初始化方法")
        # self.name = "Tom"
        self.name = new_name

    def eat(self):
        print("%s 爱吃鱼" % self.name)


tom = Cat("Tom")
print(tom.name)

lazy_cat = Cat("大懒猫")
lazy_cat.eat()

内置方法和属性

1._del_方法

  • python中,当一个对象从内存中销毁前,会自动调用_del_方法
class Cat:
    def __init__(self, new_name):
        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):
        print("%s 去了" % self.name)


# tom是全局变量
tom = Cat("Tom")
print(tom.name)
# del关键字可以删除一个对象
del tom

print("-" * 50)

一个对象的_del_方法一旦被调用,生命周期结束

posted @ 2021-01-06 23:01  DemonSlayer  阅读(54)  评论(0编辑  收藏  举报