@property 用法

import datetimeimport time

class PK(object):    def __init__(self,name,attack=0.0,defence=0.0):        self.name = name        self.attack = attack        self.defence = defence        self._obtain_time = datetime.datetime.now()

@property    def defence(self):        return self._defence

@defence.setter    def defence(self,value):        if value < 0 :            print("防御值小于0设置为0")            self._defence = 0        elif value > 1000:            print("防御值大于1000被设置为1000")            self._defence = 1000        else:            self._defence = value

@property    def age(self):        return (datetime.datetime.now() - self._obtain_time).seconds

a = PK("铠甲",defence=10000)print(a.defence)a.defence = -100print(a.age)time.sleep(1)print(a.age)

@property 是把方法变为属性,_one_underline 标识这个是私有不应该直接被访问,不属于API,但可以通过defence 这个实例属性来访问  

原文地址:https://www.cnblogs.com/wudeng/p/9299377.html

时间: 2024-10-14 10:53:11

@property 用法的相关文章

python面向对象之property用法补充(getter,setter,deleter)

用法一: class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self,value): print('set的时候运行我啊') @AAA.deleter def AAA(self): print('delete的时候运行我啊') #只有在属性AAA定义property后才能定义AAA.setter,AAA.deleter f1=Foo() f1.AAA f1.AAA='aaa' del f1.AA

struts2 &lt;s:property&gt;用法

1,访问Action值栈中的普通属性: <s:property value="attrName"/> 2,访问Action值栈中的对象属性(要有get set方法): <s:property value="obj.attrName"/> <s:property value="obj1.obj2.attrName"/> 3,访问值栈中对象属性的方法 <s:property value="obj.m

Python进阶-----property用法(实现了get,set,delete三种方法)

一.可以利用property对静态属性的进行修改操作,包括设置和删除属性 1.调用静态属性===>在静态属性函数前先用@property: 2.设置静态属性===>在静态属性函数前加上@静态属性函数名.setter,同时静态属性函数要加上value参数: 3.删除静态属性===>在静态属性函数前加上@静态属性函数名.deleter. 1 #方法一 2 class Foo: 3 @property 4 def A(self): 5 print('获取(get)属性时执行===') 6 7

黑马程序员---OC基础5【点语法】【@property关键字】【@synthesize关键字】【id类型】【动态类型】【构造方法】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [点语法] 1 1.使用“点语法” 2 Student *stu= [[Student alloc]init]; 3         //调用set方法 4         [stu setAge:20]; 5         [stu setName:@"Jone"]; 6         //点语法:xcode的特性,Xcode帮我们做了代码替换 7         //点语法,

Python @staticmethod, @classmethod, @property

@staticmethod, @classmethod, @property 用法及作用 class Foo(object) : def __init__(self) : self._name = "property test" print "init" def test(self) : print "class method" @property def name(self) : return self._name @staticmethod

Python学习第十六课——静态属性(property, classmethod, staticmethod)

计算所居住房子的面积 普通写法 class Room: def __init__(self,name,owner,width,length,heigh): self.name=name self.owner=owner self.width=width self.lenth=length self.heigh=heigh def cal_area(self): print('%s 住的 %s 总面积为 %s' %(self.owner,self.name,self.heigh*self.widt

oc语言学习之基础知识点介绍(五):OC进阶

一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点语法的语法: 对象.属性; 注意:这里的属性不需要加_ 对象.属性 = 值; 点语法的本质: 其实就是调用getter或者setter方法. 点语法注意事项: 1.在类的方法里面如果用self.age 这个是调用方法,self->_age 是直接调用成员变量. 2.千万记得不要在setter或者ge

python学习第十七天 --定制类

何为定制类? Python的class允许定义许多特殊方法,可以让我们非常方便地生成特定的类.在类中应用或者重写python的特殊方法,得到的类,就是定制类. 大家都知道print的用法.见下面例子 >>> lst = [2,3,4] >>> print lst [2, 3, 4] >>> class Animal(object): pass >>> a = Animal() >>> print a <__ma

[email&#160;protected]、self及类的本质

让代码书写更加简便 --1-- 设置器和访问器 1.1 setter 1.2 getter --2-- 类的本质 2.1 类类型的对象 2.2 类的本质 2.3 如何获取类对象 2.4 类对象的使用 2.5 类对象的存储 --3-- SEL类型 3.1 SEL --4-- @property关键字 4.1 基本概念 4.2 @property用法 4.3 @property使用注意事项 --5-- @synthesize关键字 5.1 @synthesize用法 5.2 @synthesize使