Python----类方法和类变量

类方法

概念解释

类方法是定义在类上的方法,可以通过类名或类的实例来调用。类方法使用 @classmethod 装饰器来定义,其第一个参数通常是 cls,表示类本身。类方法可以访问和修改类变量,但不能访问实例变量。

语法
class MyClass:
    @classmethod
    def my_class_method(cls, arg1, arg2, ...):
        # 方法体
特点
  1. 通过类名或实例调用:类方法可以通过类名或类的实例来调用。
  2. 第一个参数是类本身:类方法的第一个参数通常是 cls,表示类本身。
  3. 不能访问实例变量:类方法不能访问实例变量,但可以访问和修改类变量。
示例
class Student:
    school_name = "ABC School"  # 类变量

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

    @classmethod
    def change_school_name(cls, new_name):
        cls.school_name = new_name

# 通过类名调用类方法
Student.change_school_name("XYZ School")
print(Student.school_name)  # 输出: XYZ School

# 通过实例调用类方法
student1 = Student("Alice", 20)
student1.change_school_name("123 School")
print(Student.school_name)  # 输出: 123 School

类变量

概念解释

类变量是定义在类中但在方法之外的变量。类变量是所有实例共享的,可以通过类名或实例来访问和修改。类变量的值在所有实例中是相同的,除非在实例中被显式修改。

语法
class MyClass:
    class_variable = value
特点
  1. 共享性:类变量是所有实例共享的,所有实例访问的是同一个变量。
  2. 通过类名或实例访问:类变量可以通过类名或实例来访问和修改。
  3. 优先级:实例变量的优先级高于类变量,如果实例中定义了同名的实例变量,则实例变量会覆盖类变量。
示例
class Student:
    school_name = "ABC School"  # 类变量

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

# 通过类名访问类变量
print(Student.school_name)  # 输出: ABC School

# 通过实例访问类变量
student1 = Student("Alice", 20)
print(student1.school_name)  # 输出: ABC School

# 修改类变量
Student.school_name = "XYZ School"
print(Student.school_name)  # 输出: XYZ School
print(student1.school_name)  # 输出: XYZ School

# 实例中定义同名的实例变量
student1.school_name = "123 School"
print(student1.school_name)  # 输出: 123 School
print(Student.school_name)  # 输出: XYZ School

综合示例

下面是一个综合示例,展示了类方法和类变量的使用:

class Circle:
    pi = 3.14159  # 类变量

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

    @classmethod
    def change_pi(cls, new_pi):
        cls.pi = new_pi

    def area(self):
        return self.pi * self.radius ** 2

# 创建实例
circle1 = Circle(5)
circle2 = Circle(10)

# 计算面积
print(circle1.area())  # 输出: 78.53975
print(circle2.area())  # 输出: 314.159

# 修改类变量
Circle.change_pi(3.14)

# 重新计算面积
print(circle1.area())  # 输出: 78.5
print(circle2.area())  # 输出: 314.0

在这个示例中,我们定义了一个 Circle 类,其中 pi 是类变量,radius 是实例变量。我们通过类方法 change_pi 来修改类变量 pi,并通过实例方法 area 来计算圆的面积。

总结

类方法和类变量是Python中面向对象编程的重要概念。类方法可以通过类名或实例调用,用于操作类变量或执行与类相关的操作。类变量是所有实例共享的变量,可以通过类名或实例访问和修改。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值