python中的属性property_python中property_谁动了我的bug的博客-程序员宝宝

技术标签: python中的属性property  Python  

1. 私有属性添加getter和setter方法

class Money(object):
    def __init__(self):
        self.__money = 0

    def getMoney(self):
        return self.__money

    def setMoney(self, value):
        if isinstance(value, int):
           self.__money = value
        else:
           print("error:不是整型数字")

2. 使用property升级getter和setter方法

class Money(object):
    def __init__(self):
        self.__money = 0

    def getMoney(self):
        return self.__money

    def setMoney(self, value):
        if isinstance(value, int):
           self.__money = value
        else:
           print("error:不是整型数字")
    money = property(getMoney, setMoney)

运行结果:

In [1]: from get_set import Money
In [2]:
In [2]: a = Money()
In [3]:
In [3]: a.money
Out[3]: 0
In [4]: a.money = 100
In [5]: a.money
Out[5]: 100
In [6]: a.getMoney()
Out[6]: 100

3. 使用property取代getter和setter方法

@property 成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用:

1)将方法转换为只读
2)重新实现一个属性的设置和读取方法,可做边界判定

class Money(object):
    def __init__(self):
        self.__money = 0

    @property
    def money(self):
        return self.__money

    @money.setter
    def money(self, value):
        if isinstance(value, int):
           self.__money = value
        else:
           print("error:不是整型数字")

运行结果

In [3]: a = Money()
In [4]:
In [4]:
In [4]: a.money
Out[4]: 0
In [5]: a.money = 100
In [6]: a.money
Out[6]: 100

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35393693/article/details/84075213

智能推荐

CALayer的基本使用_drawlayer incontext_BianHuanShiZhe的博客-程序员宝宝

UIImageView *imageView = [[UIImageView alloc]initWithImage:image]; [self.view addSubview:imageView];// 给图片设置阴影 // 提示,在imageView中,图层不止一个,如果要实现圆角效果,需要设置一个遮罩属性 // masksToBounds属性可以让imageVi...

CALayer_pengyuan_D的博客-程序员宝宝

AppDelegate.m- (void)dealloc{ [_window release]; [super dealloc];}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.

Configuring Mod_JK 1.2 with Apache httpd 2.2 _iteye_16401的博客-程序员宝宝

1. install Apache Httpd server # intall path, ie. /apache2.2gunzip -d httpd*.tar.gztar -xvf httpd*.tarcd httpd*./configure --prefix=/ apache2.2 --enable-sslmakemake install ...

hibernate创建sessionFactory的不同方式_dawndd1345的博客-程序员宝宝

hibernate不同版本创建 sessionFactory 的不同方式

【Linux集群教程】12 集群安全防御 - 安全防御概述和Linux防火墙_Dark_Ice_的博客-程序员宝宝

参数作用-P设置默认策略:iptables -P INPUT(DROP)-F清空所有的规则(清空规则链)-L列出所有的规则条目(查看规则链)-n以数字形式形式地址,端口等信息-v以更加详细的方式形式规则信息查看规则时,显示规则的序号-A在规则链的末尾加入新规则-I num在规则链的头部(或者指定序号)加入新规则-D num删除链内指定序号(或者内容)的一条规则删除某一条规则-s匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。-d匹配目标地址-i。

SQLyog数据库操作_sqlyog刷新数据库_悲催小肖的博客-程序员宝宝

SQLyog语句新建表单显示语句SELECT * FROM 表名;添加数据INSERT INTO 表名(列1,列n) VALUES (值1,'值n');删除数据和删除所有数据(删除所有数据表还在)DELETE FROM 表名 WHERE 列1=值1;TRUNCATE TABLE 新表名;修改数据UPDATE 表名 SET 列n = '值n' WHERE 列1=值1;查询数据select 列1,列n from 表名;修改表添加列UPDATE 表名 SET 需

随便推点

学习webworker_~嘘~禁止想象~的博客-程序员宝宝

1. 什么是webworker理论多代码少的一个新特性MDN是这样说的Web Worker为Web内容在后台线程中运行脚本提供了一种简单的方法。线程可以执行任务而不干扰用户界面一个worker是使用一个构造函数创建的一个对象(e.g. Worker()) 运行一个命名的JavaScript文件这个文件包含将在工作线程中运行的代码;workers 运行在另一个全局上下文中,不同于当前的window因此,使用 window快捷方式获取当前全局的范围 (而不是self) 在一个 W

用Python获取Yahoo数据_web.get_data_yahoo_kp-learning的博客-程序员宝宝

在学python机器学习,网上找了实战教程,有需要从yahoo获取股票数据,但一开始就遇到问题了,折腾了一天。以下给出问题以及解决方法。编程环境:Linux Ubuntu16, python3.6, anaconda 1.6.14, conda 4.5.4, pandas 0.23===========================================================...

第七届蓝桥杯C/C++程序设计B组省赛第三题_tjial的博客-程序员宝宝

第三题算式这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。  Answer29// 深搜#include <stdio.

Android 热修复核心原理_一见深情的博客-程序员宝宝

目录Android 热修复核心原理, ClassLoader类加载ART 和 Dalvikdexopt与dexaotClassLoader介绍双亲委托机制热修复在线源码Android 热修复核心原理, ClassLoader类加载又在写bug?这句话虽然是句玩笑话,但是也正因为我们是人不是神,但也不能面面俱到,什么都考虑完美,出现bug是不可避免的。那...

apache2.0.49-tomcat5.0.19-jk2建立virtualHost _swordzjj的博客-程序员宝宝

目标和环境 三个基于名字服务的虚拟主机配置。 软件下载载址 http://java.sun.com/j2se http://www.apache.org/dist 假设所有的下载文件全部放在/tmp下 软件环境 · RedHat Linux 9.0 · Jakarta-tomcat-5.0.19.tar.gz · Jakarta-tomcat-connnectors-jk2-src-current

overflow:auto出现滚动效果不显示滚动条_overflow不显示滚动条_冬至z的博客-程序员宝宝

问题描述overflow:auto 子元素超过父元素高度或者宽度时会出现滚动条(需要设置高度和宽度),当我这么设置之后出现了滚动效果却没有滚动条。问题原因全局写了滚动条宽度为0。::-webkit-scrollbar : {width:0}当我用样式覆盖后还是没有出现。::-webkit-scrollbar : {width:0}可能原因是样式没有写完整。解决办法将样式写全.printLogFather::-webkit-scrollbar { widt