Python @property装饰器的用法,判断函数参数整形、字符串、取值范围
  TEZNKK3IfmPf 26天前 29 0

如果我们对所赋的值有一定的限制,比如要求名字必须是字符串,年龄必须是数字,否则会对方法的调用造成影响,这个时候单纯的赋值就不能满足这样的过滤效果了。既然是条件过滤,那么这几条代码就需要放在方法里,所以就有了setName(),getName()这样的方法,在set方法里做条件限制,使用的时候是这样的:

p1 = People('张三', 22)
p1.set('李四')
print(p1.getName())

这样其实已经可以了,很满足功能需要。而用@property是让这个更简洁,既保持直接对属性赋值的方便,又对条件做了限制:

实例:

# -*- coding: UTF-8 -*-
 

class People(object):
    def __init__(self, name, age):
         = name
        self.age = age

    @property
    def name(self):
        a = self._name
        #返回前还可以对数据做处理,比如格式化等
        return a
  
    @name.setter
    def name(self,value):
        #在赋值之前添加判断
        if not isinstance(value, str):
            # 抛出异常
            raise TypeError('People ,name must be a str!')
        self._name = value
 
 
#调用的时候仍然是方便快捷的直接赋值:
p1 = People('张三', 22)
#=111
 = '李四'
print()
        
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 26天前 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月12日   31   0   0 字符串java
  TEZNKK3IfmPf   2024年05月17日   30   0   0 字符串php
TEZNKK3IfmPf