Python类变量和实例变量

Python中的类变量和实例变量是两种不同类型的变量,它们在作用域和访问方式上有所不同。

类变量是定义在类中,但在方法之外的变量。它们被所有类的实例共享,并且可以通过类名或实例来访问。类变量通常用于存储与该类的所有实例相关的共享数据。

实例变量是定义在方法中或构造函数中的变量。每个实例都有自己的一组实例变量,并且它们与该实例的特定属性相关联。实例变量的值可以在每个实例中单独设置和访问。

下面是一个简单的示例代码来演示类变量和实例变量的区别:

class MyClass:
    class_var = 0  # 类变量

    def __init__(self, instance_var):
        self.instance_var = instance_var  # 实例变量

# 创建两个实例
obj1 = MyClass(10)
obj2 = MyClass(20)

# 访问类变量
print("Class variable:", MyClass.class_var)  # 输出: Class variable: 0
print("Class variable (via instance):", obj1.class_var)  # 输出: Class variable (via instance): 0

# 修改类变量
MyClass.class_var = 5
print("Modified class variable (via class):", MyClass.class_var)  # 输出: Modified class variable (via class): 5
print("Modified class variable (via instance):", obj2.class_var)  # 输出: Modified class variable (via instance): 5

# 访问实例变量
print("Instance variable (obj1):", obj1.instance_var)  # 输出: Instance variable (obj1): 10
print("Instance variable (obj2):", obj2.instance_var)  # 输出: Instance variable (obj2): 20

# 修改实例变量
obj1.instance_var = 15
print("Modified instance variable (obj1):", obj1.instance_var)  # 输出: Modified instance variable (obj1): 15
print("Instance variable (obj2):", obj2.instance_var)  # 输出: Instance variable (obj2): 20

在上面的示例中:
  class_var是一个类变量,可以通过类名或实例来访问。
  instance_var是一个实例变量,每个实例都有自己的副本,并且只能通过实例来访问。修改类变量的值会影响所有实例,但修改实例变量的值只会影响该实例本身。

相关推荐

  1. Python变量实例变量

    2024-01-28 21:00:01       49 阅读
  2. python变量实例变量

    2024-01-28 21:00:01       28 阅读
  3. Python中的变量实例变量有什么区别?

    2024-01-28 21:00:01       43 阅读
  4. Python 变量

    2024-01-28 21:00:01       45 阅读
  5. Python变量

    2024-01-28 21:00:01       20 阅读
  6. python新式变化统一类型

    2024-01-28 21:00:01       54 阅读
  7. python函数-变量参数-2.4

    2024-01-28 21:00:01       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 21:00:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 21:00:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 21:00:01       82 阅读
  4. Python语言-面向对象

    2024-01-28 21:00:01       91 阅读

热门阅读

  1. CCF-CSP 202309-1 坐标变换(其一)

    2024-01-28 21:00:01       50 阅读
  2. C++继承

    C++继承

    2024-01-28 21:00:01      57 阅读
  3. 用cityscapes fine tune yolov8-seg

    2024-01-28 21:00:01       55 阅读
  4. 《动手学深度学习(PyTorch版)》笔记4.9

    2024-01-28 21:00:01       36 阅读
  5. kingbase常用SQL总结之使用率

    2024-01-28 21:00:01       55 阅读
  6. 代码随想录算法训练营29期Day31|LeetCode 455,376,53

    2024-01-28 21:00:01       62 阅读
  7. 【 C++私房菜】模板的入门与进阶

    2024-01-28 21:00:01       44 阅读