@property 添加属性 检查参数

@property装饰器就是负责把一个方法变成属性调用的

class property(object):

    def deleter(self, *args, **kwargs): 
        """ Descriptor to change the deleter on a property. """
        pass

    def getter(self, *args, **kwargs): 
        """ Descriptor to change the getter on a property. """
        pass

    def setter(self, *args, **kwargs): 
        """ Descriptor to change the setter on a property. """
        pass

    def __delete__(self, *args, **kwargs): 
        """ Delete an attribute of instance. """
        pass

    def __getattribute__(self, *args, **kwargs): 
        """ Return getattr(self, name). """
        pass

    def __get__(self, *args, **kwargs): 
        """ Return an attribute of instance, which is of type owner. """
        pass

    def __init__(self, fget=None, fset=None, fdel=None, doc=None): 
    	"""
    	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.
    	"""
        pass

    @staticmethod
    def __new__(*args, **kwargs): # real signature unknown
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __set__(self, *args, **kwargs): 
        """ Set an attribute of instance to value. """
        pass

    fdel = property(lambda self: object(), lambda self, v: None, lambda self: None)
    
    fget = property(lambda self: object(), lambda self, v: None, lambda self: None)  
  
    fset = property(lambda self: object(), lambda self, v: None, lambda self: None)

    __isabstractmethod__ = property(lambda self: object(), lambda self, v: None, lambda self: None)

当你需要对类的一个属性可读时,可以直接使用 @property ,而可写就必须要可读才行

class sum(object):
	@property
	def a(self):
		# 请不要将参数定义的与函数名相同 否则会造成一直调用函数的窘境
		return self._a
	# 函数 a 已经通过上面的方法定义为一个property对象
	@a.setter
	def a(self, value):
		self._a = value
	@property
	def b(self):
		return self._b
	@b.setter
	def b(self, value):
		self._b = value
	

在这里插入图片描述
可能你有一个疑惑那就是,我如果不对 self._a 直接返回,而是加一个值对其进行赋值,是不是可以直接改值
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hjhcos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值