@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:不是整型数字")

定义一个property属性

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)  # 定义一个属性,当对这个money设置值时调用setMoney,当获取值时调用getMoney

a = Money()
a.money = 101  # 调用setMoney方法
print(a.money)  # 调用getMoney方法

使用@property

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

    @property
    #使用装饰器对money进行装饰,那么会自动添加一个叫money的属性,当调用获取money的值时,调用此下一行的方法
    def money(self):
        return self.__money

    @money.setter
    #使用装饰器对money进行装饰,当对money设置值时,调用下一行的方法
    def money(self, value):
        if isinstance(value, int):
            self.__money = value
        else:
            print("error:不是整型数字")

a = Money()
a.money = 100
print(a.money)
时间: 2024-08-20 22:10:10

@property 取代getter setter方法的相关文章

lombok注解为java类生成Getter/Setter方法

1. 先到lombok官网下载lombok.jar包 : http://projectlombok.org/ 2. 下载了之后的两种安装方法: 1. 双击下载下来的 JAR 包安装 lombok 我选择这种方式安装的时候提示没有发现任何 IDE,所以我没安装成功,我是手动安装的.如果你想以这种方式安装,请参考官网的视频. 2.eclipse / myeclipse 手动安装 lombok 1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹

android studio: 快捷键生成getter/setter方法时自动加m的问题

平时使用Android Studio 在写实体类的时候,习惯给实体类的成员变量前面加上一个"m" 修饰符表示这是一个成员变量,这也是搞java的一种约定俗成的写法,本来这是没有问题的,可是在默认情况下使用快捷键生成getter()/setter()方法时,生成的getter()/setter()方法名居然也加了“m” ,成员变量的个数少了也就罢了,自己一个一个手改,成员变量的个数一多,改的人头都大了! 比如我要给一个名为Person的实体类生成getter()/setter()方法 使

@property和@synthesize快速生成getter setter方法

//@property: 可以自动生成某个成员变量的setter和getter声明,用于类的.h文件中 @property int age; 相当于 - (void)setAge:(int)age; - (int)age; 同一类型的数据写法 @property int age,age1; //@synthesize:自动生成age的setter和getter的实现 @synthesize age = _age 相当于 - (void)setAge:(int)age { _age = age;

Python的property _getter和setter方法【转】

当给属性赋值的时候,使用实例.属性=属性值的方式显然把属性暴露出来了,并且也无法对属性值进行限制检查,java中提供了setter和getter方法,那么python是如何做的呢?更多内容请参考:Python学习指南 属性赋值方法 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 上面的赋值显然不符合实际情况,为了限制score的范围,可以通过一个set_score()方法来设置成绩

使用lombok注解@Getter @Setter方法代码编译成功,但是没有生成get,set方法

现象描述: 在对应类对象中,添加lombok的@Getter或@Setter注解,编译没有问题,但是在使用类对象时,没有出现对应的get或set方法. 配置且编译ok,但是没有对应的get或set方法. 检查或者按照下列步骤配置: 1.将下载的lombok.jar放在与eclipse.ini同级目录下. 2.检查eclipse.ini文件中-javaagent:绝对路径\lombok.jar(检查或者添加lombok.jar在eclipse.ini文件中的配置). 3.将project--> B

ARC以及MRC中setter方法

ARC以及MRC中setter方法的差异 有时候,你会需要重写setter或者getter方法,你知道么,ARC与MRC的setter方法是有着差异的呢. 先看下MRC下的setter方法: 在看下ARC下的setter方法: 小结: 1. 一旦你重写了getter.setter方法,你必须使用@synthesize variable = _variable来区分属性名与方法名. 2. ARC与MRC的getter方法一致,就setter方法有着略微区别.

ARC以及MRC中setter方法的差异

ARC以及MRC中setter方法的差异 有时候,你会需要重写setter或者getter方法,你知道么,ARC与MRC的setter方法是有着差异的呢. 先看下MRC下的setter方法: 在看下ARC下的setter方法: 小结: 1. 一旦你重写了getter.setter方法,你必须使用@synthesize variable = _variable来区分属性名与方法名. 2. ARC与MRC的getter方法一致,就setter方法有着略微区别. ARC以及MRC中setter方法的差

1-2SPRING-BOOT-JPA添加lombok-管理getter/setter

1.1  lombok 详细使用可以看官网:https://projectlombok.org/features/all 1.2  使用@Data注解,这个注解的作用是: @Data All together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor! 1.3

python3的getter方法setter方法以及property修饰

class Dog: def __init__(self,name,age): self.__name = name self.__age = age @property def age(self): return self.__age @age.setter def age(self,age): self.__age = age @property def name(self): return self.__name @name.setter def name(self,name): self