怎么java判断对象属性为空 Python 对象是否包含某个属性

34242人阅读
python(29)
在python中可以通过in和not in关键字来判读一个list中是否包含一个元素
theList = [‘a’,’b’,’c’]
if ‘a’ in theList:
print ‘a in the list’
if ‘d’ not in theList:
print ‘d is not in the list’
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1310359次
积分:19912
积分:19912
排名:第413名
原创:794篇
转载:87篇
评论:120条
(1)(3)(1)(1)(4)(3)(3)(3)(6)(3)(3)(3)(2)(3)(2)(1)(1)(2)(2)(2)(15)(10)(3)(2)(5)(6)(2)(3)(1)(6)(2)(6)(1)(8)(5)(3)(12)(1)(10)(6)(28)(25)(1)(10)(28)(5)(25)(6)(33)(10)(26)(39)(17)(15)(23)(11)(3)(35)(5)(22)(6)(1)(29)(5)(1)(23)(20)(19)(24)(12)(3)(4)(10)(3)(1)(11)(8)(7)(11)(18)(52)(15)(1)(2)(2)(1)(2)(1)(1)(2)(11)(1)(1)(19)(15)(18)python实现判断数组是否包含指定元素的方法
作者:企鹅不笨
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了python实现判断数组是否包含指定元素的方法,涉及Python中in的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了python实现判断数组是否包含指定元素的方法。分享给大家供大家参考。具体如下:
python判断数组是否包含指定的元素的方法,直接使用in即可,python真是简单易懂
print 3 in [1, 2, 3] # membership (1 means true
inventory = ["sword", "armor", "shield", "healing potion"]
if "healing potion" in inventory:
print "You will live to fight another day."
运行结果如下:
You will live to fight another day.
希望本文所述对大家的Python程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具怎么查看一类的所有属性?【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:148,627贴子:
怎么查看一类的所有属性?收藏
dir只有部分,__all__里也没有。我说的是android上的。比如dir(android.Android())只要看到部分属性,一些静态方法就看不到了。怎么获取一个类的所有方法?
python_总监级名师全程面授,项目实战案例式教学,企业需求无缝对接,助你无忧就业!python,报名即送树莓设备,0基础23周快速实现高薪就业,名额有限,欲报从速.点击抢座
同问,楼主解决了没有
登录百度帐号推荐应用[Python]一个关于类属性及实例属性的小问题的探讨 - 简书
[Python]一个关于类属性及实例属性的小问题的探讨
标题名字有点长。之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子。因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解释比较含糊,并没有从根本上解释这个问题,所以才想写一下我对这个问题的想法。
性子急的可以直接跳到最后看总结。
为了方便对比,我还是使用原帖子的例子:
class AAA():
obj1 = AAA()
obj2 = AAA()
print obj1.aaa, obj2.aaa, AAA.aaa
obj1.aaa += 2
print obj1.aaa, obj2.aaa, AAA.aaa
AAA.aaa += 3
print obj1.aaa, obj2.aaa, AAA.aaa
情形1的结果是:10 10 10;情形2的结果是:12 10 10;情形3的结果是:12 13 13;
首先为什么会有这个问题呢?因为aaa属性被称为类属性,既然是类属性,那么根据从C++/Java这种静态语言使用的经验来判断,类属性应该是为其实例所共享的。那么很自然的,既然是共享关系,那么从类的层次改变aaa的值,自然其实例的aaa的值也要跟着变化了。可是情形3的情况却说明,上面的说法是错的。错哪里呢?要从Python的类属性讲起
Python中类属性的含义
Python属于动态强类型的语言,在很多地方和静态语言不同,因此,不能把静态语言的规则套到动态语言上来。其中,类属性就是一个很好的例子。Python中属性的获取对于属性,我们通常采用类.属性或实例.属性的形式调用。例如上例中的AAA.aaa属于类.属性形式,obj1.aaa属于实例.属性的形式Python中属性的设置对于属性的设置我们通常采用类.属性 = 值或实例.属性 = 值的形式例如obj1.aaa = 3
上例中obj1.aaa += 2等价于obj1.aaa = obj1.aaa + 2,这句话包含了属性获取及属性设置两个操作
OK,重点来了,Python中属性的获取和设置的机制与静态语言是不同的,正是背后机制的不同,导致了Python中类属性不一定是为其实例所共享的
Python中属性查找机制
Python中属性的获取存在一个向上查找机制,还是拿上面的例子做说明:Python中一切皆对象,AAA属于类对象,obj1属于实例对象,从对象的角度来看,AAA与obj1是两个无关的对象,但是,Python通过下面的查找树建立了类对象AAA与实例对象obj1、obj2之间的关系。如图所示
(图画的不好,见谅 -.-!!!)当调用AAA.aaa时,直接从AAA获取其属性aaa。但是情形1中调用obj1.aaa时,Python按照从obj1到AAA的顺序由下到上查找属性aaa。值得注意的这时候obj1是没有属性aaa的,于是,Python到类AAA中去查找,成功找到,并显示出来。所以,从现象上来看,AAA的属性aaa确实是共享给其所有实例的,虽然这里只是从查找树的形式模拟了其关系。
Python中的属性设置
原帖子的作者也指出问题的关键在于情形2中obj1.aaa += 2。为什么呢?上面我们指出obj.aaa += 2包含了属性获取及属性设置两个操作。即obj1.aaa += 2等价于obj1.aaa = obj1.aaa + 2。其中等式右侧的obj.aaa属于属性获取,其规则是按照上面提到的查找规则进行,即,这时候,获取到的是AAA的属性aaa,所以等式左侧的值为12。第二个操作是属性设置,即obj.aaa = 12。当发生属性设置的时候,obj1这个实例对象没有属性aaa,因此会为自身动态添加一个属性aaa。由于从对象的角度,类对象和实例对象属于两个独立的对象,所以,这个aaa属性只属于obj1,也就是说,这时候类对象AAA和实例对象aaa各自有一个属性aaa。那么,在情形3中,再次调用obj1.aaa时,按照属性调用查找规则,这个时候获取到的是实例对象obj1的属性aaa,而不是类对象AAA的属性aaa。
对问题探讨的总结
到这里就可以完满解释上面的问题:
Python中属性的获取是按照从下到上的顺序来查找属性;
Python中的类和实例是两个完全独立的对象;
Python中的属性设置是针对对象本身进行的;
对情形1的解释
因为Python中的属性获取是按照从下到上的顺序来查找的,所以在情形1:
obj1 = AAA()
obj2 = AAA()
实例对象obj1和obj2不存在属性aaa。证明如下:
&&& obj1.__dict__
&&& obj2.__dict__
所以,此时,obj1.aaa, obj2.aaa, AAA.aaa实质上都是指AAA.aaa。因此,输出同样的结果。
对情形2的解释
因为Python中的类和实例是两个完全独立的对象且Python中的属性设置是针对对象本身进行的,所以在情形2:
obj1.aaa += 2
实质上是对实例对象obj1设置了属性aaa,并赋值为12。证明如下:
&&& obj1.aaa = 3
&&& obj1.__dict__
{'aaa': 3}
&&& obj2.__dict__
因此,再次调用obj1.aaa时,将获取到的是实例对象obj1的属性aaa,而不是类对象AAA的属性aaa。而对于实例对象obj2,由于其并没有属性aaa,所以调用obj2.aaa时,获取到的是AAA的属性aaa。
对情形3的解释
顺利理解了前两个情形,那么第3个情形就很容易了,改变AAA的属性aaa只能影响到类对象AAA和实例对象obj2,不能影响obj1,因为,obj1存在aaa,在获取时,不会获取到AAA的属性。
写在最后的话
问题本身很简单,但是通过对这个问题的探讨,可以深入理解Python作为一个动态语言,在OOP的机制上与静态语言的差别。最关键的地方在于两点:
理解Python是如何利用查找树的机制来模仿类及实例之间的关系;
理解动态语言是可以动态设置属性的
software |
Haidian.Beijing|
Python/C/C++/Java|}

我要回帖

更多关于 js 对象是否包含属性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信