python类中函数的变量

  • Post category:Python

在python类中定义的函数,既可以作为类的方法使用,也可以由实例对象调用。函数的参数和变量可以分为类变量和实例变量两种类型,这取决于定义在哪个作用域。下面分别介绍类变量和实例变量的使用方式和注意事项。

一、类变量

类变量即定义在类作用域内,但在函数之外的变量。它的生命周期与类相同,所有该类的实例对象都可以访问类变量并对其进行修改。在类定义时,可以直接在类中声明变量,也可以在函数中声明变量并用cls.来调用类变量。

1.1 定义类变量

可以直接在类中定义变量作为类变量,如下所示:

class Person:
    name = "default"
    age = 18

1.2 访问类变量

可以通过类名或实例对象来访问类变量,如下所示:

# 通过类名来访问类变量
print(Person.name)   # 输出:default

p1 = Person()
p1.name = "Tom"
# 通过实例对象来访问类变量
print(p1.name)   # 输出:Tom

p2 = Person()
# 所有该类实例对象共享同一个类变量
print(p2.name)   # 输出:default

1.3 修改类变量

可以通过类名或实例对象来修改类变量,如下所示:

# 通过类名来修改类变量
Person.name = "Jerry"

p1 = Person()
# 修改类变量对所有实例对象都生效
print(p1.name)   # 输出:Jerry

p2 = Person()
print(p2.name)   # 输出:Jerry

# 通过实例对象来修改类变量
p2.name = "Bob"
print(p1.name)   # 输出:Jerry
print(p2.name)   # 输出:Bob

二、实例变量

实例变量即定义在函数内部(类方法、实例方法)的变量。它的生命周期与实例对象相同,每个实例对象都有自己的实例变量,并且不能够被其他实例对象访问和修改。

2.1 定义实例变量

实例变量是在类的方法中进行定义,使用 self. 来声明实例变量,例如下面代码所示:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

2.2 访问实例变量

实例变量只能通过实例对象来访问,如下所示:

p1 = Person("Tom", 20)
# 通过实例对象来访问实例变量
print(p1.name, p1.age)   # 输出:Tom 20

2.3 修改实例变量

实例变量只能通过实例对象来修改,如下所示:

p2 = Person("Jerry", 18)
print(p2.name, p2.age)   # 输出:Jerry 18

p2.age = 30
print(p2.age)   # 输出:30

综上所述,类变量和实例变量的使用方式和注意事项如上所述。在编写python程序时,需要根据实际需求选择适合的变量类型,并正确使用变量,避免程序出错。