Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析

yizhihongxing

Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析

1. 类变量与成员变量

类变量

类变量是定义在类中但在所有实例之间共享的变量。它可以通过类名或实例访问,当一个实例修改了类变量的值时,该修改会影响到其他所有实例。在类的定义中,类变量通常位于类方法之外,且在所有实例之前初始化。

示例代码:

class Circle:
    # 类变量
    pi = 3.14

    def __init__(self, radius):
        # 成员变量
        self.radius = radius

    def calculate_area(self):
        # 计算面积
        return Circle.pi * self.radius ** 2

# 创建两个圆的实例
circle1 = Circle(5)
circle2 = Circle(10)

# 访问类变量
print(circle1.pi)  # 输出: 3.14
print(circle2.pi)  # 输出: 3.14

# 修改类变量
Circle.pi = 3.14159

# 对所有实例的类变量进行修改
print(circle1.pi)  # 输出: 3.14159
print(circle2.pi)  # 输出: 3.14159

成员变量

成员变量是定义在类方法中的变量,每个实例都有一份独立的成员变量。它们在每个实例中可以有不同的值,与其他实例互不影响。成员变量需要在构造方法(__init__)中进行初始化。

示例代码:

class Circle:
    pi = 3.14

    def __init__(self, radius):
        # 成员变量
        self.radius = radius

    def calculate_area(self):
        return Circle.pi * self.radius ** 2

# 创建两个圆的实例
circle1 = Circle(5)
circle2 = Circle(10)

# 访问成员变量
print(circle1.radius)  # 输出: 5
print(circle2.radius)  # 输出: 10

2. 类方法与成员方法

类方法

类方法是定义在类中的方法,通过类名调用且可以访问类变量,但无法访问实例变量。类方法使用@classmethod装饰器进行标识,第一个参数通常为cls表示类本身。类方法可以用于创建、修改或处理类级别的数据,比如在创建实例之前对类变量进行修改。

示例代码:

class Circle:
    pi = 3.14

    def __init__(self, radius):
        self.radius = radius

    @classmethod
    def change_pi(cls, new_pi):
        # 修改类变量
        cls.pi = new_pi

# 创建一个圆的实例
circle = Circle(5)

# 调用类方法修改类变量
Circle.change_pi(3.14159)

# 访问类变量
print(circle.pi)  # 输出: 3.14159

成员方法

成员方法是定义在类中的方法,通过实例调用,可以访问实例变量和类变量。成员方法的第一个参数通常为self,表示实例本身。成员方法用于对实例进行操作,可以读取或修改实例的属性。

示例代码:

class Circle:
    pi = 3.14

    def __init__(self, radius):
        self.radius = radius

    def calculate_area(self):
        # 计算面积
        return Circle.pi * self.radius ** 2

# 创建一个圆的实例
circle = Circle(5)

# 调用成员方法计算面积
area = circle.calculate_area()

# 打印结果
print(area)  # 输出: 78.5

以上就是关于Python面向对象程序设计中类变量与成员变量、类方法与成员方法的用法分析和示例说明。希望能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析 - Python技术站

(0)
上一篇 2023年6月28日
下一篇 2023年6月28日

相关文章

  • 7z命令行详解

    以下是“7z命令行详解的完整攻略”的详细讲解,过程中包含两个示例说明的标准Markdown格式文本: 7z命令行详解的完整攻略 7z是一款开源的压缩软件,支持多种压缩格式。本文将介绍如何使用7z命令行进行压缩和解压缩操作,并提供一些常用的命令示例。 1. 压缩文件 1.1 压缩单个文件 我们可以使用以下命令将单个文件压为7z格式: 7z a -t7z fil…

    other 2023年5月10日
    00
  • 8个实用的svg工具 20个有用的svg工具 五款超实用的开源库

    8个实用的SVG工具 1. Inkscape Inkscape是一款免费的开源矢量图形编辑器,支持SVG格式。它提供了许多有用的工具和功能,例如路径编辑、图形变换、文本编辑、颜色选择器等。Inkscape还支持导入和导出其他矢量图形格式,如EPS、PDFAI等。 2. Adobe Illustrator Adobe Illustrator是一款商业矢量图形编…

    other 2023年5月9日
    00
  • vuejs中监听窗口关闭和窗口刷新事件的方法

    在Vuejs中监听窗口关闭和窗口刷新事件,需要用到window对象的“beforeunload”事件和Vue实例的生命周期钩子函数。下面是完整攻略: 1.使用window.onbeforeunload事件 我们可以在Vue实例的created生命周期钩子函数中监听window的beforeunload事件。beforeunload事件是在窗口即将关闭或刷新时…

    other 2023年6月27日
    00
  • 电脑任务栏点击无反应怎么办 电脑最下面任务栏点不动的4种解决方法

    电脑任务栏点击无反应怎么办 电脑的任务栏是我们经常使用的工具之一,但是有时候会出现点击无反应的情况,下面介绍一下解决方法。 方法1:关闭explorer.exe进程 有时候,任务栏出现问题是由于explorer.exe进程出现了问题,此时我们可以通过关闭进程再重新启动来解决。具体步骤如下: 按下“Ctrl+Shift+Esc”组合建,打开任务管理器; 在任务…

    other 2023年6月26日
    00
  • numpy由float转换为int 取最近的整数

    NumPy由float转换为int取最近的整数攻略 在NumPy中,可以使用astype()函数将float类型的数组转换为int类型的数组,并取最近的整数。本攻略中,我们将详细介绍如何使用astype()函数将float类型数组转为int类型的数组,并取最近的整数。 步骤1:创建float类型的数组 在使用astype()函数将float类型的数组换为in…

    other 2023年5月6日
    00
  • tp5入门

    以下是tp5入门的完整攻略,包括环境搭建、路由配置、控制器和模型的使用、视图渲染和两个示例说明。 环境搭建 以下是tp5入门前需要搭建的环境: 安装PHP:从PHP官网下载PHP安装包,安装PHP。 安装Composer:从Composer官网下载Composer安装包,安装Composer。 安装tp5:使用Composer安装tp5框架。 路由配置 以下…

    other 2023年5月6日
    00
  • vue封装自定义分页器组件与使用方法分享

    下面详细讲解“Vue封装自定义分页器组件与使用方法分享”的攻略: 1. 前言 在实际开发中,分页器是一个非常重要的组件,它可以帮助我们展示大量数据并提高用户的浏览效率。但是,常见的分页器组件往往无法满足我们的需求,因此我们需要自己动手来封装一个自定义的分页器组件。本篇攻略将会介绍如何封装自定义分页器组件并提供两个使用示例。 2. 分页器组件的设计 首先,我们…

    other 2023年6月25日
    00
  • vue中使用elementui实现树组件tree右键增删改功能

    Vue中使用ElementUI实现树组件Tree右键增删改功能,需要以下步骤: 安装ElementUI 在项目中使用ElementUI,需要先安装ElementUI库。可以使用npm安装,具体命令为: npm install element-ui –save 引入ElementUI 在Vue项目中引入ElementUI,需要在main.js中加入以下代码:…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部