首页 > 其他 > 详细

@property 的用法

时间:2021-04-13 10:33:03      阅读:22      评论:0      收藏:0      [点我收藏+]

类/装饰器

@property装饰器负责把类中的方法转换成属性来调用
有三种调用方法

方法一:@property直接加在需要转换的方法上

class People:
    def __init__(self, name, weight, height):
        self.__name = name
        self.weight = weight
        self.height = height

    @property
    def bmi(self):
        return self.weight / (self.height ** 2)


test1 = People(‘nana‘, 50, 1.5)
print(test1.bmi)

方法二:属性名称=property(方法名1,方法名2,...)

class People:
    def __init__(self, name, weight, height):
        self.name = name
        self.weight = weight
        self.height = height

    def get_name(self):
        return self.name

    def set_name(self, val):
        if type(val) is not str:
            print(‘must type(str)‘)
            return
        self.name = val

    def del_name(self):
        print("warning:can‘t do it")

    name_test = property(get_name, set_name, del_name)


obj1 = People(‘nana‘, 50, 1.5)
print(obj1.name_test)
obj1.name_test = ‘NANA‘
print(obj1.name_test)
del obj1.name_test

方法三:首先将需要转换的方法统一成一个名称,相应的方法上添加相应的@名称推荐使用

class People:
    def __init__(self, name, weight, height):
        self.__name = name
        self.weight = weight
        self.height = height

    @property
    def namess(self):
        return self.__name

    @namess.setter
    def namess(self,val):
        if type(val) is not str:
            print(‘must type(str)‘)
            return
        self.__name=val

    @namess.deleter
    def namess(self):
        print(‘NO DEL‘)


obj2=People(‘simon‘,74,1.8)
print(obj2.namess)
obj2.namess=‘Tom‘
print(obj2.namess)
del obj2.namess

@property 的用法

原文:https://www.cnblogs.com/ylsp-0533/p/14651180.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!