实例变量与类变量
本课属于 Coddy Python 学习旅程的“面向对象编程”单元。第 13 课,共 64 课。
实例变量对每个对象来说都是独有的,而类变量由同一个类的所有对象共享。
下面是一个包含这两种变量的类示例
class Student:
# 类变量,所有实例共享
school = "Python High School"
def __init__(self, name, grade):
# 实例变量,每个学生各自独有
self.name = name
self.grade = grade创建学生对象:
alice = Student("Alice", "A")
bob = Student("Bob", "B")访问实例变量(每个对象独有):
print(alice.name) # Alice
print(bob.name) # Bob
print(alice.grade) # A
print(bob.grade) # B访问类变量(由所有对象共享):
print(alice.school) # Python 高中
print(bob.school) # Python 高中
print(Student.school) # Python 高中现在修改类变量:
Student.school = "Python Academy"检查这项更改对所有实例的影响:
print(alice.school) # Python Academy
print(bob.school) # Python Academy输出:
Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python Academy你也可以在创建对象后创建实例变量:
alice.age = 16 # 这会创建一个实例变量
print(alice.age) # 16
# print(bob.age) # 这会导致错误,因为 bob 没有 age 属性关键区别:实例变量(使用 self.variable_name 创建)是每个对象独有的,而类变量(直接在类中定义)由所有对象共享。更改类变量会影响所有实例。
挑战
简单完成一个银行系统。你将在一个文件中定义 BankAccount 类,并在另一个文件中使用它。
你将使用:
bank_account.py:定义带有属性和方法的BankAccount类driver.py:导入这个类、创建账户,并演示类变量
按照两个文件中的 TODO 注释逐步操作。这些注释会指导你创建包含合适变量和方法的类,并展示类变量如何影响所有实例。
亲手试试
# TODO: 从 bank_account.py 导入 BankAccount 类
from bank_account import BankAccount
# TODO: 按以下详细信息创建两个账户:
# account1:账户持有人为 "Alice Smith",余额为 $1000
# account2:账户持有人为 "Bob Jones",余额为 $2000
# TODO: 对两个账户分别调用 display_info()
# TODO: 将类变量 interest_rate 改为 0.03(3%)
# 使用以下格式:BankAccount.interest_rate = 0.03
# TODO: 打印文本 "After interest rate change:"
# TODO: 再次对两个账户分别调用 display_info(),显示它们都使用了新的利率这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Python 在线编译器