码迷,mamicode.com
首页 > 其他好文 > 详细

@property 的用法

时间:2021-04-13 12:41:12      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:test   get   直接   添加   span   一个   block   set   rgba   

类/装饰器

@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 的用法

标签:test   get   直接   添加   span   一个   block   set   rgba   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!