Python---property笔记

在定义类的属性的时候我们会定义一些私有属性,私有属性我们并不能直接去修改,我们需要定义一个共有方法去修改这些私有属性。

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

    def getage(self):
        print(self.__age)
    def setage(self,age):
        slef.__age = age

在调用这些方法的时候,会产生很多的麻烦,看着不舒服,用起来也比较烦人。

if __name__ == '__main__':
    p = Person("小红",18)
    
    p.name="小绿"
    print(p.name)
    
    p.setage(20)
    p.getage()

这个时候我们可以使用property修饰器,使方法作为属性来用,如果做property,那么这个属性就是一个只读属性,想要将方法变成属性赋值,需要引用另一个装饰器@age.setter.我们在对实例尚属性进行操作时,其实通过getter和setter方法去实现的。如果只定义getter不定义setter,那么这个属性就是一个只读属性。

class Person:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    @property
    #可以将方法当做属性去用
    def age(self):
        return self.__age

    @age.setter
    #固定写法
    def age(self,age):
        self.__age = age

    def tel(self):
        return self.__age

if __name__ == '__main__':
    p = Person("小红",18)

    p.name="小绿"
    print(p.name)

    p.age = 20
    print(p.age)

    print(p.tel())
F:\学习代码\Python代码\venv\Scripts\python.exe F:/学习代码/Python代码/day5/ceshi.py
小绿
20
20

Process finished with exit code 0

这样我们就可以和普通的属性一样随心所欲的定义了,

猜你喜欢

转载自blog.csdn.net/qq_41112887/article/details/88747222