精通 Python 中的实例变量:入门指南

liftword23小时前技术文章3

Python 中的实例变量是什么?

实例变量是属于类实例的变量。从类中创建的每个对象都有这些变量的独立副本。与所有实例共享的类变量不同,实例变量为每个对象存储独特的数据。

想象一下:如果你和我都报名参加了在线 Python 课程,我们每个人都有自己的登录凭证。课程(类)是相同的,但我们的用户名(实例变量)是唯一的!

如何在 Python 中定义实例变量

要定义实例变量,需要在类中使用 self 关键字。让我们看看一个简单的例子:

class Student:
    def __init__(self, name, age):
        self.name = name  # Instance variable
        self.age = age    # Instance variable
# Creating instances
student1 = Student("Harish", 20)
student2 = Student("Chandru", 22)
print(student1.name)  # Output: Harish
print(student2.age)   # Output: 22

在这个例子中,nameage 是实例变量。每个 Student 对象都有自己这些变量的值。

实例变量存储在哪里?

实例变量存储在对象的 __dict__ 属性中。可以使用以下方法进行检查:

print(student1.__dict__)

这将输出:

{'name': 'Harish', 'age': 20}

每个实例都有自己的 __dict__,只存储其特定的数据。

实例变量与类变量的区别

特征实例变量类变量定义在 __init__() 方法中外部 __init__() 属于单个实例整个类的变化只影响一个实例所有实例

类变量的示例:

class Course:
    category = "Programming"  # Class variable
    
    def __init__(self, name):
        self.name = name  # Instance variable
course1 = Course("Python Basics")
course2 = Course("Java Basics")
print(course1.category)  # Output: Programming
print(course2.category)  # Output: Programming

修改实例变量

您可以这样修改特定对象的实例变量:

student1.age = 21  # Changing Harish's age
print(student1.age)  # Output: 21

这次更改不会影响其他实例,例如 student2

想了解更多关于访问和修改实例变量的信息,请查看 PYnative。

实例变量常见问题解答

1. 如果访问一个不存在的实例变量会发生什么?

Python 将引发一个 属性错误 :

print(student1.grade)  # AttributeError: 'Student' object has no attribute 'grade'

2. 实例变量能否在__init__外部创建?

是的!您可以在之后添加它们:

student1.grade = "A"
print(student1.grade)  # Output: A

3. 该如何删除一个实例变量?

使用 del:

del student1.age
print(student1.age)  # Raises AttributeError。

相关文章

Python | 一文搞懂self

关于self在Python中,self是一个关键字,它表示类实例本身。通常,self是在类方法中的第一个参数传递的。通过使用self,我们可以访问类的属性和方法。当一个类定义后,我们可以使用它来创建对...

python self是什么鬼,其本质就是特殊的形参

小伙伴们能真正理解 self 是什么东西吗?现在我从实质上为小伙伴们讲解一下 self。self 的实质是形参,现通过普通形参,来讲解特殊形参 self看基本概念的理解普通形参:通过 函数(参数) 方...

为什么python的self参数必须显式声明?隐式this才是万恶之源

杂谈python中存在 self 这个参数,记得有个朋友是写 java 的,当他看到python中的代码立刻明白了它的用途。他问我:“为什么python中的 self不能像this一样,隐式声明多好,...

Python这个代码里面x=self是什么意思啊

大家好,我是Python进阶者。一、前言前几天在Python白银交流群【无敌劈叉小狗】问了一个Python基础的问题,问题如下:这个代码里面x=self是什么意思啊?self到底是个什么存在呢?感觉把...

Python super()函数:调用父类的构造方法

前面不止一次讲过,Python 中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。但我们知道,Python 是一门支持多继承的...

一文带你解读JavaScript的引用类型和函数对象

前言相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScrip...