python中的@property

@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的

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)
    @bmi.deleter
    def bmi(self):
        del self.__name

p1=People(‘wang‘,67,1.7)
del p1.bmi
print(p1.__name)

@bmi.deleter相当于一个接口,想要直接删除私有属性是不可以的,要有这么一个接口.删除私有属性

说明:同一属性的三个函数名要相同。(例子中都是bim)

@bmi.setter是修改

def bmi(self,新的参数)

原文地址:https://www.cnblogs.com/wanglongtai/p/8321641.html

时间: 2024-11-07 20:47:39

python中的@property的相关文章

python 中的@property

如果在Java中定义类,我们经常使用类来封装一些属性,比如说,Student类中,有firstname 和 lastname,同时的,为了能访问和修改这个属性,我们还会设置set和get方法,但是,在Python中,我们可以使用@property的方法来将一个方法变成一个类属性,并且,利用同样的方式,来生成set和get方法,如下代码: ######################################################################## class P

python中的property属性

目录 1. 什么是property属性 2. 简单的实例 3. property属性的有两种方式 3.1 装饰器方式 3.2 类属性方式,创建值为property对象的类属性 4. property属性-应用 4.1. 私有属性添加getter和setter方法 4.2. 使用property升级getter和setter方法 4.3. 使用property取代getter和setter方法 1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # #

Python中的@property和decorator

初次认识decorator和@property Welcome. 在本文中,将详细学习如何使用Python中的decorator和@property. 将会学习的内容: 使用decorator的优势. 使用@property的优势. 装饰器函数的基础知识:它们是什么以及如何与@property关联起来. 如何使用@property定义getter.setter和deleter. Python中decorator的优势 在不确定其他代码块对现有函数的调用,不改变现有函数,保证代码可靠稳定,避免修改

Python中的@property装饰器

要了解@property的用途,首先要了解如何创建一个属性. 一般而言,属性都通过__init__方法创建,比如: 1 class Student(object): 2 def __init__(self,name,score): 3 self.name=name 4 self.score=score 创建实例,运行结果: 1 tim=Student('Tim',97) 2 tim.score=100 3 tim.score 4 100 5 mary=Student('Mary',90) 6 m

python中的property

property(fget=None, fset=None, fdel=None, doc=None) -> property attribute fget is a function to be used for getting an attribute value, and likewise fset is a function for setting, and fdel a function for del'ing, an attribute. Typical use is to defi

python中的property注解

装饰器(decorator)可以给函数动态加上功能吗?对于类的方法,装饰器一样起作用.Python内置的 @property 装饰器就是负责把一个方法变成属性调用的: class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError('score must

python中的property及实现lazy property

@property有什么用呢?表面看来,就是将一个方法用属性的方式来访问. 上代码,代码最清晰了. class Circle(object): def __init__(self, radius): self.radius = radius @property def area(self): return 3.14 * self.radius ** 2 c = Circle(4) print c.radius print c.area 可以看到,area虽然是定义成一个方法的形式,但是加上@pr

Python中的property()函数

property() 函数的作用是在新式类中返回属性值 1.语法: class property([fget[, fset[, fdel[, doc]]]]) 2.参数: fget -- 获取属性值的函数 fset -- 设置属性值的函数 fdel -- 删除属性值函数 doc -- 属性描述信息 3.返回值:返回新式类属性 4.实例:银行卡案例,假设钱是私有属性. class Card: def __init__(self, card_no): '''初始化方法''' self.card_no

python中使用@property

class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score must between