装饰器@property与@xxx.setter

class Student():
  def __init__(self,name,score):
  self.__name = name
  self.__score = score
  @property
  def name(self):
    return self.__name
  @name.setter
  def name(self,name):
    self.__name = name

s1 = Student(‘zhang‘,25)
print(s1.name)               #s1.name就相当于执行了s1.get_name()
s1.name = ‘wang‘         #s1.name = ‘wang‘就相当于执行了s1.set_name(‘wang‘)
print(s1.name)

这两个装饰器的意义在于,简化操作,能够像操作普通属性一样操作一些方法,方法内容正常些,方法名就定义为属性名,在方法前加装饰器@property就把这个方法变成了读取值方法(get),在方法前加装饰器"@属性名.setter"就将其定义为了赋值方法(set)

原文地址:https://www.cnblogs.com/zhangzhaoyu/p/9235252.html

时间: 2024-10-16 00:11:25

装饰器@property与@xxx.setter的相关文章

python学习之类和实例的属性;装饰器@property

无论是类还是实例,一切皆是对象. Python是强动态语言,和java在这点上有所不同. class Ab(): a = 666 # 定义类对象Ab,自带属性a,值为666 # 使用Ab.__dict__可以查看类Ab的属性 us1 = Ab() us2 = Ab() # 定义两个实例对象us1.us2,这两个实例自身并不具备任何属性 # 只有在__init__中定义了self.arg=xxx的情况下,实例默认会具备arg属性 动态语言中,属性自带操作方法:获取(读).设置(写):还可以定义删除

@property与@xxx.setter的用法

类中@property与@xxx.setter的方法介绍. 简单说,@property就是将定义的函数(方法)当作属性对象使用,不需要像调用函数那样去调用,而@xxx.setter是为@xxx的这样函数进行值的设置, 就是可以用@xxx.setter为xxx的函数进行值的更改,在@xxx.setter声明下的函数名字可以不用xxx相同的函数名. # property装饰器# 作用: 将一个get方法转换为对象的属性. 就是 调用方法改为调用对象# 使用条件: 必须和属性名一样 # setter方

[学习记录]python装饰器、getter、setter

1.装饰器 一般以@开头,后面紧跟着一个函数,例如flask中的url设置就是一种装饰器 2.getter与setter 这里用代码来解释 1 class Student(object): 2 3 @property 4 def score(self): 5 return self._score 6 7 @score.setter 8 def score(self, value): 9 self._score=value 第一个@property将score变成了一个getter,同时允许创建@

python 之用装饰器@property,把方法变成一个特性

# -*- coding: utf-8 -*- """ Created on Sun Nov 13 23:19:03 2016 @author: toby """ #知识点:用装饰器@property,把方法变成一个特性 class Province:     memo = 'One of China\'s 23 provinces' #静态字段          def __init__(self,name,capital,leadership

property内置装饰器函数和@name.setter、@name.deleter

# property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import pi class Circle: def __init__(self, r): self.r = r def perimeter(self): return 2 * pi * self.r def area(self): return pi * self.r**2 * pi c1 = Circle

python基础===装饰器@property

以下来自Python 3.6.0 Document: class property(fget=None, fset=None, fdel=None, doc=None) Return a property attribute. fget is a function for getting an attribute value. fset is a function for setting an attribute value. fdel is a function for deleting an

python 描述符 上下文管理协议 类装饰器 property metaclass

1.描述符 #!/usr/bin/python env # coding=utf-8 # 数据描述符__get__ __set__ __delete__ ''' 描述符总结 描述符是可以实现大部分python类特性中的底层魔法,包括@classmethod,@staticmethd,@property甚至是__slots__属性 描述符是很多高级库和框架的重要工具之一,描述符通常是使用到装饰器或者元类的大型框架中的一个组件 注意事项: 一 描述符本身应该定义成新式类,被代理的类也应该是新式类 二

python内置装饰器@property

前言 今天来说一下@property装饰器,这是个python内置的装饰器,主要是作用是把类中的一个方法变为类中的一个属性,并且使定义属性和修改现有属性变的更容易 我们可以看一下@property源码中给的实例和解释 1 Decorators make defining new properties or modifying existing ones easy: 2 3 4 class C(object): 5 @property 6 def x(self): 7 "I am the 'x'

python装饰器@property

装饰器示例 def w1(func): def inner(): print('...验证权限...') func() return inner @w1 def f1(): print('f1 called') @w1 def f2(): print('f2 called') f1() f2() 输出结果: ...验证权限... f1 called ...验证权限... f2 called 当调用f1,f2函数时,首先执行了验证.通过一个闭包函数w1,调用函数上通过关键词@w1,对f1,f2完成