在 Python 中更改类成员?

pythonserver side programmingprogramming

Python 面向对象编程允许在类级别或实例级别使用变量,其中变量只是表示您在程序中使用的值的符号。

在类级别,变量被称为类变量,而在实例级别的变量被称为实例变量。让我们通过一个简单的示例来了解类变量和实例变量−

# Class Shark
class Shark:
animal_type= 'fish' # 类变量
def __init__(self, name, age):
self.name = name
self.age = age

# 创建 Shark 类的对象
obj1 = Shark("Jeeva", 54)
obj2 = Shark("Roli", 45)

print ("使用两个实例打印类变量")
print ("obj1.animal_type =", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

#让我们使用实例变量更改类变量
obj1.animal_type = "BigFish"

print ("\n对一个实例进行更改后打印类变量")
print ("obj1.animal_type=", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

在上面的程序中,我们创建了一个 Shark 类,然后我们尝试使用对象更改类变量,这将为该特定对象创建一个新的实例变量,并且该变量会遮蔽类变量。

输出

使用两个实例打印类变量
obj1.animal_type = fish
obj2.animal_type = fish
对一个实例进行更改后打印类变量
obj1.animal_type= BigFish
obj2.animal_type = fish

让我们修改上面的程序以获得正确的输出 −

# Class Shark
class Shark:
animal_type= 'fish' # 类变量
def __init__(self, name, age):
self.name = name
self.age = age

# 创建 Shark 类的对象
obj1 = Shark("Jeeva", 54)
obj2 = Shark("Roli", 45)

print ("使用两个实例打印类变量")
print ("obj1.animal_type =", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

#让我们使用实例变量更改类变量
#obj1.animal_type = "BigFish"

Shark.animal_type = "BigFish"
print("New class variable value is %s, changed through class itself" %(Shark.animal_type))

print ("\nPrinting class variable after making changes through instances")
print ("obj1.animal_type=", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

结果

Printing class variable using two instances
obj1.animal_type = fish
obj2.animal_type = fish
New class variable value is BigFish, changed through class itself

Printing class variable after making changes through instances
obj1.animal_type= BigFish
obj2.animal_type = BigFish

相关文章