@property 的使用

Python学习之-Property详解 在Python中,property 是一种内置的装饰器,它可以将类的方法转换为属性,让你在不改变类接口的情况下添加额外的逻辑,如输入值的验证、取值的计算等。property 可以作为一种方式让你的类接口保持清晰且易于使用。property 装饰器最常见的应用场景是将类的属性封装起来,提供getter 和 setter 方法。这种方式的原因是,你可以对属性赋值或者取值的代码进行控制,而不是直接暴露属性。 阅读详情

Objective-C语言关键词,与@synthesize配对使用。

功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。

说白了,就是java中的getter setter方法。

声明property的语法为:

  @property (参数1,参数2) 类型 名字;
  如: @property(nonatomic,retain) UIWindow *window;
  其中参数主要分为三类:
  读写属性: (readwrite/readonly)
  setter语意:(assign/retain/copy)
  原子性: (atomicity/nonatomic)
  各参数意义如下:
  readwrite
  产生setter\getter方法
  readonly
  只产生简单的getter,没有setter。
  assign
  默认类型,setter方法直接赋值,而不进行retain操作
  retain
  setter方法对参数进行release旧值,再retain新值。
  copy
  setter方法进行Copy操作,与retain一样
  nonatomic
  禁止多线程,变量保护,提高性能。

assign  通常用于基本类型,如int,bool,char等。

copy 通常用于NSString,NSNumber,NSArray等不变的类型。

retain 一般的NSObject 都用这个。

 下面解释一下NSString类型的变量的setter方法为什么要用copy.直接上代码:

1
2
3
4
5
6
7
8
9
10
@interface Person
@property ( nonatomic , retain) NSString *name;
@end
 
Person *p = [[Person alloc] init];
NSMutableString *name = [[ NSMutableString alloc] initWithString:@ "hello" ];
p.name = name;
 
[name appendString:@ " world" ];
NSLog (@ "%@" , p.name);   // 此时p.name已变成hello world, 这不是我们想要的。
如果
?
1
2
3
4
5
6
7
8
9
10
@interface Person
@property ( nonatomic , copy ) NSString *name;
@end
 
Person *p = [[Person alloc] init];
NSMutableString *name = [[ NSMutableString alloc] initWithString:@ "hello" ];
p.name = name;
 
[name appendString:@ " world" ];
NSLog (@ "%@" , p.name);   // 此时p.name仍为hello, 这是正确的。





NSString类型变量的值是不会发生变化的,但变量的内存地址是会发生变化的。copy的用法是复制内容,并且新分配一块内存地址。而retain则是将输入参数的内存地址复制一份,赋给成员变量。所以copy和retain的区别在于,如果传入的参数是NSMutableString类型的话,这个参数一旦发生变化,成员变量的内容也会发生变化;而用copy,则不会发生这种情况(因为两者的内存地址完全不同)。如果传入的参数是NSString,则用copy和retain的效果完全一样,没什么分别。所以NSString、NSArray等不可变的类型建议用copy。

以上代码来自cocoachina

http://www.cocoachina.com/bbs/read.php?tid=107184&toread=1





@property的使用 文章目录前言普通示例对属性赋值进行约束@property的使用@property原理 前言 手机QQ有一个根据条件查找陌生人的功能。我初中时挺爱玩儿的,也因此在好友列表里添加了不少女生,相隔十年,我不得不感谢当时做出英明决定的自己,因为现在浏览空间总能看到大量的美女自拍,爽歪歪…… ……咳咳!不扯了,进入正题。 普通示例 既然我们要查找符合条件的陌生人,那当然得先构建一个具有这样条件的人出来,再... 阅读详情

相关推荐

概率论—期末复习速成笔记(自用)

概率论期末复习

a200327的博客 2万+

Python @property 装饰器讲解

property() 函数 与 @property 装饰器讲解

小皇鱼-的-博客 4700

告别VBA!用Python+PyWin32自动化你的SolidWorks建模流程(附完整代码)

本文详细介绍了如何利用Python和PyWin32实现SolidWorks建模流程的自动化,替代传统的VBA宏开发。通过环境配置、宏代码转换、高级开发模式及工程化实践等实战内容,帮助机械设计师构建高效、可维护的自动化工作流,显著提升设计效率。

weixin_30485379的博客 364

【python】 @property属性详解

python@property详解

热爱生活、热爱技术、热爱记录~ 1万+

在x86机器上运行jailhouse

jailhouse jaihouse提供了一个demo ,https://github.com/siemens/jailhouse-images可以用于编译一整套可用的demo。 适用于多个平台。编译过程主要参考https://blog.youkuaiyun.com/weixin_39541632/article/details/110422345 此demo可以生成多个平台所用的操作系统image。 ...

闲人的专栏 3004

实战教程:用DETR+超分辨率搞定红外小目标检测(附完整代码)

本文提供了一套完整的红外小目标检测实战方案,通过融合EDSR超分辨率技术与改进型DETR深度学习算法,有效解决了红外图像中小目标检测的难题。文章详细介绍了从环境搭建、数据预处理、模型定制(如引入EMA注意力与S2特征层)到训练调优的全流程,并附有完整代码,旨在帮助开发者将前沿算法高效落地于安防、自动驾驶等实际场景。

weixin_29057163的博客 531

python知识:装饰器@property有啥用途?

python的@property是python的一种装饰器,是用来修饰方法的。python @property 装饰器使一个方法可以像属性一样被使用。除此之外,还有几个使用场景,本文将叙述这些使用技巧。

gongdiwudu的专栏 9975

PICO4 VR开发调试神器:用Live Preview Plugin实现电脑串流,告别反复打包烧录的繁琐流程

本文详细介绍了PICO4 VR开发中如何使用Live Preview Plugin实现电脑串流,显著提升开发效率。通过实时预览和调试功能,开发者可以避免反复打包烧录的繁琐流程,特别适用于Unity环境下的VR应用开发。文章涵盖环境配置、连接设置、实时调试技巧及性能优化方案,是PICO4开发者的必备指南。

weixin_34110970的博客 418

Python @property装饰器详解

之前的文章中,我们探究了@后接某个自定义函数的用法,实际上,更常见、完备、简单的应用在于对@和python内置的函数进行结合;这可以避免造轮子的行为。 我们知道, Python 内置了3种函数装饰器,分别是 @staticmethod、@classmethod 和 @property,其中 staticmethod()、classmethod() 和 property() 都是 Python 的内置函数。而本文的目的,是以@property为例,对内置函数的装饰器应用进行探究,以明了其应用范围。 pro

yingxuanzhang的博客 1万+

cartographer运行错误集合

播放bag的时候错误 Check failed: sensor_to_tracking->translation().norm() < 1e-5 The IMU frame must be colocated with the tracking frame. Transforming linear acceleration into the tracking frame will otherwise be imprecise tracking frame不是imu的link 修改lua文件中的.

Studying…… 2016

【学习系列】SAP RAP 29:如何创建Application Jobs(下)

本文介绍了在SAP系统中通过API创建和使用Application Jobs的方法。主要内容包括:1) 创建RAP应用并通过Action调用API创建Jobs;2) 使用事件驱动方式异步更新Job状态;3) 通过URL跳转到标准日志页面;4) 使用Custom Entity获取Job日志;5) 演示遗留接口IF_APJ_DT_EXEC_OBJECT和IF_APJ_RT_EXEC_OBJECT的使用。文章提供了详细的代码示例,展示了如何通过CL_APJ_RT_API=>SCHEDULE_JOB调度作业,

DeveloperMrMeng的博客 373

使用@property

Python has a great concept called property which makes the life of an object oriented programmer much simpler. Before defining and going into details of what @property is, let us first build an in...

Ripo_za的博客 250

《Python基础教程》内容总览篇(持续更新中)

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为优快云博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。个人精心开设的《Python基础课程》专栏订阅量接近900,帮助不少同学解决了Bug。

weixin_43178406的博客 35万+

【python】@property的使用

接下来我们定义一个full_name的方法,将full_name的拼接操作放在方法中来实现。但是这样的话,我们获取full_name就只能通过调用full_name方法的方式来获取,如果我们加上@property装饰器的话,就可以继续把full_name当成属性来调用。举个例子,在动态修改实例的last_name参数后,根据last_name拼接而成的full_name是没有同步变更的。此时,当用户修改full_name的属性值时,会自动调用@full_name.setter修饰的方法。

ximianyang的博客 465

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python @property

@property 方法变属性,定义只读属性

tangsiqi130的博客 1293

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

@property 的使用

  @property是 python 的一种装饰器,用以修饰方法。使用@property装饰器来创建只读属性,将方法转换为相同名称的只读属性,,以防止属性被修改。 使用场景: 修饰方法,使方法可以像属性一样访问。 class DataSet(object): @property def method_with_property(self): # 含@property return 15 def method_without_property(self): # 不含@pr

晓野豬 358

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于@property

class Exam(object): def __init__(self,score): self._score=score @property def score(self): return self._score @score.setter def score(self,value): ...

weixin_30333885的博客 65

python中@property的作用

Python中的@property是一个装饰器,主要的作用是改变了类中方法的调用方式,具体的就是类实例化后的对象调用类中的方法一般后面需要加上“()”以表明调用的是方法,如果不加括号,说明调用的是类中的属性,但是经过@property修饰器修饰之后的方法,类实例化后的对象调用该方法时后面变不再需要加上小括号了,看起来就像是调用了类中的一个属性一样。因为这个装饰器所修饰方法的作用就是调用类中的属性,而类实例化对象便可以通过该方法间接调用到类中的私有属性,从而做到了更加规范化。...

weixin_44305115的博客 4844

@property

@property    @property 关键字的使用  (编译器指令)    必须与@synthsize关键字匹配使用    (代替了set 和 get 方法的声明)    作用:    xcode4.4之前    编译器遇到 @property 的时候,自动增加 实例变量 的get

qq_26765381的专栏 985

Python属性使用@property和不使用@property的差别

Python属性使用@property和不使用@property的差别 转载自:https://blog.youkuaiyun.com/u013821237/article/details/84673712 首先看下属性的分类: 1:实例属性: 最好在__init__(self,…)中初始化 内部调用时都需要加上self. 外部调用时用instancename.propertyname 2:类属性: 在__i...

weixin_40893646的博客 330

python中的@property

在python中,@property是一个装饰器,用于将类中的方法转换为属性。通过 @property,你可以将方法的调用方式变为属性访问方式,同时保留方法的内部逻辑,可以使代码更加简洁,易读,并且可以在访问属性时执行一些额外的逻辑。:可以定义一些动态计算的属性,这些属性的值不是直接存储的,而是在访问时计算。可以在不改变接口的情况下,将普通属性改为方法,或者将方法改为普通属性。,你可以将方法的实现细节隐藏起来,只暴露属性的接口。:将方法转换为属性,使方法的调用方式与普通属性相同。:定义属性的设置器方法。

m0_59247951的博客 1234

关于@property的使用总结

原文1:python @property的介绍与使用 - 知乎 原文2:Python 中@property的用法 - 周伯通的麦田 - 博客园 作用:可以把方法变为属性相似,调用时可不加() 使用场景:在于数据库连接时可用于处理密码等敏感信息 ...

weixin_44986857的博客 983
上一篇: java 解析json
下一篇: NSError 错误code对照
yesjava
博客等级 码龄19年 69粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值