在 Python 中创建类时,通常会创建可以在类的每个对象之间共享的属性,或者创建对类的每个对象都是唯一的属性。
在本文中,我们将通过示例了解 Python 中的类属性和实例属性之间的区别。
在此之前,让我们看看如何在 Python 中创建一个类。
如何在 Python 中创建一个类
要在 Python 中创建一个类,我们使用 class 关键字后跟类名。这里有一个例子:
class Student:
name = "Jane"
course = "JavaScript"
在上面的代码中,我们创建了一个名为 Student 的类,该类具有 name 和 course 属性。现在让我们从这个类创建新对象。
class Student:
name = "Jane"
course = "JavaScript"
Student1 = Student()
print(Student1.name)
# Jane
我们已经从 Student 类中创建了一个名为 Student1 的新对象。
当我们打印 Student1.name 时,我们将 “Jane” 打印到控制台。回想一下,Jane 的值存储在创建的原始类中的一个变量中。
这个 name 和 course 变量实际上是类属性。我们将在下一节中看到更多示例,以帮助您更好地理解。
Python 中的类和实例属性
为了给出这两个术语的基本定义,类属性是类的每个对象继承的类变量。对于每个新对象,类属性的值保持不变。
正如您将在本节的示例中看到的那样,类属性是在 __init__()
函数之外定义的。
另一方面,在 __init__()
函数中定义的实例属性是类变量,允许我们为类的每个对象定义不同的值。
这是一个例子:
class Student:
school = "blog.axiaoxin.com"
def __init__(self, name, course):
self.name = name
self.course = course
Student1 = Student("Jane", "JavaScript")
Student2 = Student("John", "Python")
print(Student1.name) # Jane
print(Student2.name) # John
在上面的代码中,我们在 Student 类中创建了一个名为 school 的变量。
我们在 __init__()
函数中创建了另外两个变量——name 和 course——我们使用 self 参数对其进行了初始化。
__init__()
函数中的第一个参数用于在函数中创建变量时初始化其他参数。你可以叫它任何你想要的名字——按照惯例,最常使用的是 self。
school 变量充当类属性,而 name 和 course 是实例属性。让我们分解上面的例子来解释实例属性。
Student1 = Student("Jane", "JavaScript")
Student2 = Student("John", "Python")
print(Student1.name) # Jane
print(Student2.name) # John
我们从 Student 类创建了两个对象——Student1 和 Student2。默认情况下,每一个对象都有类中创建的所有变量。但是每个对象都能够拥有自己的 name 和 course 变量,因为它们是在 __init__()
函数中创建的。
现在让我们打印每个对象的 school 变量,看看会发生什么。
print(Student1.school) # blog.axiaoxin.com
print(Student2.school) # blog.axiaoxin.com
两者都给了我们相同的值,因为 school 变量是一个类属性。
总结
在本文中,我们了解了如何在 Python 中创建类以及类和实例属性之间的区别。
总之,类属性对于每个对象都保持相同,并且在 __init__()
函数之外定义。实例属性在某种程度上是动态的,因为它们在每个对象中可以有不同的值。
实例属性在 __init__()
函数中定义。
祝您编码愉快!