📜  在Python中访问实例变量的不同方法(1)

📅  最后修改于: 2023-12-03 15:23:27.093000             🧑  作者: Mango

在Python中访问实例变量的不同方法

在Python中访问实例变量的方法如下:

1. 通过实例对象访问实例变量

以示例类Person为例:

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

可以通过类的实例访问实例变量,如下所示:

person = Person('Tom', 18)
print(person.name) # 输出 'Tom'
print(person.age) # 输出 18
2. 通过方法访问实例变量

可以定义gettersetter方法,用于访问和修改实例变量:

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

    def set_name(self, name):
        self._name = name

    def set_age(self, age):
        self._age = age

    def get_name(self):
        return self._name

    def get_age(self):
        return self._age

可以通过调用方法访问实例变量,如下所示:

person = Person('Tom', 18)
print(person.get_name()) # 输出 'Tom'
print(person.get_age()) # 输出 18
3. 使用@property访问实例变量

@property是Python内置的装饰器,可以将方法转换成属性访问:

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

    @property
    def name(self):
        return self._name

    @property
    def age(self):
        return self._age

可以通过调用方法访问实例变量,但是不需要调用方法:

person = Person('Tom', 18)
print(person.name) # 输出 'Tom'
print(person.age) # 输出 18
4. 使用@setter访问实例变量

@setter@property的补充,可以将方法转换成设置属性值的方法:

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

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, age):
        self._age = age

可以通过属性访问实例变量,同时可以通过属性设置实例变量的值:

person = Person('Tom', 18)
print(person.name) # 输出 'Tom'
person.name = 'Jerry'
print(person.name) # 输出 'Jerry'
总结

以上四种方法都可以用于访问和修改实例变量,根据使用场景选择相应的方法即可。