Python -- 面向对象3大特性、类和对象、类的定义和使用、构造方法和析构方法

1. Python–面向对象程序设计


面向对象是程序开发领域中的重要思想,这种思想模拟了人类认识客观世界的逻辑,是当前计算机软件工程学的主流方法。

类是面向对象的实现手段。


1.1 面向对象3大特性


1.1.1 封装

在这里插入图片描述


1.1.2 继承

在这里插入图片描述


1.1.3 多态

在这里插入图片描述


1.2 类和对象


1.2.1 类

从具体的事物中把共同的特征抽取出来,形成一般的概念称为“归类”,忽略事物的非本质特牲,关注与目标有关的本质特征,找出事物间的共性,抽象出一个概念模型,就是定义一个类。

在面向对象的方法中,类是具有相同属性和行为的一组对象的集合,它提供一个抽象的描述,其内部包括属性和方法两个主要部分,它就像一个模具,可以用它铸造一个个具体的铸件。在这里插入图片描述


1.2.2 对象

对象是现实世界中可描述的事物,它可以是有形的也可以是无形的,从一本书到一家图书馆,从单个整数到繁杂的序列等都可以称为对象。

万物皆对象

在这里插入图片描述

对象是构成世界的一个独立单位,它由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一个独立整体。
在这里插入图片描述


1.3 类的定义和使用

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


1.4 构造函数(方法)与析构函数(方法)


1.4.1 构造函数

每个类都有一个默认的__init__()方法。

  • 如果定义类时显式地定义__init__()方法,则创建对象时Python解释器会调用显式定义的__init__()方法;
  • 如果定义类时没有显式定义__init__()方法,那么Python解释器会调用默认的__init__()方法。

init()方法按照参数的有无(self除外)可分为有参构造方法和无参构造方法。
在这里插入图片描述

前面在类中定义的属性是类属性,可以通过对象或类进行访问;在构造方法中定义的属性是实例属性,只能通过对象进行访问。


1.4.2 示例: 定义一个类Information,在该类中显式地定义一个带有3个参数的__init__()方法

class Information(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age


info = Information('杜甫', 20)

1.4.3 Python的垃圾回收机制

Python中的垃圾回收主要采用的是引用计数。

引用计数是一种内存管理技术,它通过引用计数器记录所有对象的引用数量,当对象的引用
计数器数值为0时,就会将该对象视为垃圾进行回收。

1.4.4 getrefcount()函数

getrefcount()函数是sys模块中用于统计对象引用数量的函数,其返回结果通常比预期的结果大1。

这是因为getrefcount()函数也会统计临时对象的引用。

class Information(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age


info = Information('杜甫', 20)

print(sys.getrefcount(info))

在这里插入图片描述


1.4.5 析构方法

当一个对象的引用计数器数值为0时,就会调用__del__()方法,这个方法就是类的析构方法。

import sys


class Information(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __del__(self):
        print("对象被释放")


info = Information('杜甫', 20)

print(sys.getrefcount(info))

在这里插入图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值