python如何判断self.属性是否存在
在JQuery编码中,我们会判断元素是否存在某个属性.比如是否包含 class="new" 的样式呢.JQuery判断就非常简单了,因为有 hasClass这个方法 $("input[name=new]").hasClass("new") 即可判断.
但是有时候我们需要判断别的属性,比如有的 a 链接包含 rel 属性,有的没有rel属性.这时该怎么判断呢?
这时就没有现成的方法了. 如果存在某个属性 $("#aid").attr("rel") 会返回 rel的值,如果不存在 rel属性则会返回"undefined"
undefined 就是 undefined类型 , if($("#aid").attr("rel")=="undefined") 这个判断可能不成立.
因为类型不相同.
建议使用 if(typeof($("#aid").attr("rel"))=="undefined") 即可
isEmpty()判断有没有元素以及list是否为null,参考下面代码
if(list!=null && !list.isEmpty()){这个里面取list中的值}else{做其他处理} 上面代码说明:根据if条件的判断,如果list存在,会做“这个里面取list中的值”的处理,如果list不存在或为空,那么会做“做其他处理”处理
有关这个问题 有三种解决办法:
方法一:这就要使用一个函数:hasattr(object, name)
下面看下函数hasattr()的用法:
如果自己定义的话:
可以通过返回值来判断!
方法二:用dir来判断:
代码含义:如果objlist对象里面存在att属性,则打印出改属性!
方法三:
代码含义:通过异常捕捉来实现逻辑!
一般来说,在Python中,类实例属性的访问规则算是比较直观的。
但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此。
在这里,我们需要明白以下几个地方:
1.Python是一门动态语言,任何实体都可以动态地添加或删除属性。
2.一个类定义了一个作用域。
3.类实例也引入了一个作用域,这与相应类定义的作用域不同。
4.在类实例中查找属性的时候,首先在实例自己的作用域中查找,如果没有找到,则再在类定义的作用域中查找。
5.在对类实例属性进行赋值的时候,实际上会在类实例定义的作用域中添加一个属性(如果还不存在的话),并不会影响到相应类中定义的同名属性。
下面看一个例子,加深对上述几点的理解:
复制代码
代码如下:
class A:
cls_i = 0
cls_j
= {}
def __init__(self):
self.instance_i =
0
self.instance_j =
{}
在这里,我们先定义类A的一个实例a,然后再看看类A的作用域和实例a的作用域中分别有什么:
复制代码
代码如下:
>>> a = A()
>>>
a.__dict__
{'instance_j': {}, 'instance_i': 0}
>>>
A.__dict__
{'__init__': , '__module__': '__main__', 'cls_i': 0, 'cls_j': {},
'__doc__': None}
我们看到,a的作用域中有instance_i和instance_j,A的作用域中有cls_i和cls_j。
我们再来看看名字查找是如何发生的:
复制代码
代码如下:
>>> a.cls_i
0
>>>
a.instance_i
0
在查找cls_i的时候,实例a的作用域中是没有它的,却在A的作用域中找到了它;在查找instance_i的时候,直接可在a的作用域中找到它。
如果我们企图通过实例a来修改cls_i的值,那会怎样呢:
复制代码
代码如下:
>>> a.cls_i = 1
>>>
a.__dict__
{'instance_j': {}, 'cls_i': 1, 'instance_i': 0}
>>>
A.__dict__
{'__init__': , '__module__': '__main__', 'cls_i': 0, 'cls_j': {},
'__doc__': None}
我们可以看到,a的作用域中多了一个cls_i属性,其值为1;同时,我们也注意到A作用域中的cls_i属性的值仍然为0;在这里,我们其实是增加了一个实例属性,并没有修改到类属性。
如果我们通过实例a操纵cls_j中的数据(注意不是cls_j本身),又会怎么样呢:
复制代码
代码如下:
>>> a.cls_j['a'] =
'a'
>>> a.__dict__
{'instance_j': {}, 'cls_i': 1, 'instance_i':
0}
>>> A.__dict__
{'__init__': , '__module__': '__main__',
'cls_i': 0, 'cls_j': {'a': 'a'}, '__doc__': None}
我们可以看到a的作用域没有发生什么变化,但是A的作用域发生了一些变化,cls_j中的数据发生了变化。
实例的作用域发生变化,并不会影响到该类的其它实例,但是类的作用域发生变化,则会影响到该类的所有实例,包括在这之前创建的实例:
复制代码
代码如下:
>>> A.cls_k = 0
'varname' in dir()
测试代码如下:
class User():
def __init__(self):
self.name = 'Tony'
self.gender = 'Male'
def isExist(self, varname):
if varname in dir(self):
print(varname, ':' ,eval('self.' + varname))
else:
print(varname, ' is not exist!')
new = User()
new.isExist('name')
new.isExist('age')
输出结果如下:
name : Tony
age is not exist!
在Python中,判断一个字符串是否包含另一个字符串
在Python中,要检查一个字符串是否包含另一个字符串,多种方法可供选择:首先,利用内置的in关键字,这是最直观且常用的方法。只需检查目标字符串是否在源字符串的子序列中,即可轻松完成判断。其次,可以使用str.find()函数,它返回子字符串在父字符串中的首次出现位置。如果找不到子字符串,find()...
python如何判断一个数是否为素数
要判断一个数是否为素数,可以使用循环来检查该数是否能够被比它小的所有正整数整除。如果该数不能被整除,说明它是一个素数。下面是一个使用Python编写的素数判断函数:这个函数首先检查n是否小于或等于1,如果是,则返回False,因为1不是素数。然后,它使用一个循环来检查n是否能够被比它小的所有正...
python判断数字多少到多少?
python怎样判断输入了多少个数字intCount=0?#创建计数器 A=input("请输入信息:")?#获取输入的信息 foriteminA:??#for循环遍历获取到的信息 ?ifitem.isdigit():??#判断遍历到的元素是否为数字 ???intCount+=1??#如果是数字,计数器+1次 print(intCount)?#输出计数器的数字,也就是你一共...
python如何判断数据类型
在Python编程中,要判断数据类型,我们主要依赖的是内置的isinstance()函数和type()函数。isinstance()函数更全面地考虑了继承关系,而type()则忽略了这种关系。以下是它们的使用方法和区别:isinstance()函数的语法如下:isinstance(object, classinfo)参数包括实例对象(object)和可能的类型或类型元组(class...
python判断素数
python下判断素数是怎样的呢?下面就让我们一起来了解一下吧:素数也叫质数,英文名称为prime number,也就是指在一个大于1的自然数中,除了1和该整数的自身外,不可以被其他自然数整除的数,素数在数论中是有着非常重要的地位的。一般来说,比1大但不是素数的数称之为合数,而1和0既非素数也非合数...
python如何判断类型
在Python编程中,确定对象类型是一项基本任务。Python提供了内置的isinstance()函数来实现这个功能。这个函数是Python语言的核心组成部分,用于检查一个变量所关联的对象是否属于指定的类或其子类。isinstance()函数的使用方式为isinstance(object, class-or-type-or-tuple)。如果object是classinfo类的实例,或者...
如何用PYTHON判断奇偶数
如何用PYTHON判断奇偶数 首先我们打开JUPYTER NOTEBOOK,新建一个空白的PYTHON文档。当然也可以用其它编译器的。n = input("Please input a number: ") if n % 2 == 0: print("This is an even.") elif n % 2 != 0: print("This is an odd") 我们...
python中如何判断整型占了多少位(2023年最新分享)
导读:很多朋友问到关于python中如何判断整型占了多少位的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!python判断数字位数首先你的数字是整数还是小数?如果是整数,那么判断数字位数很简单 如过输入整数a=123456 a_text=str(a)print(len(a))#将...
python判断字符串有多少(2023年最新分享)
a="hello"printlen(a)结果就是5 python判断字符串有几个字符字符串长度 通过内置方法len()来计算字符串的长度,注意这个计算的是字符的长度。aa='afebb'bb='你'printlen(aa)printlen(bb)Python中如何判断一个字符串中有几个空格a='2014.11??2016.03??xxx'print?len(a)?-?len(a.replace('...
如何用Python判断字符串里是否包含数字?
你可以使用 Python 的字符串方法来判断字符串中是否包含数字。下面是一种常见的方法:def contains_digit(s):for char in s:if char.isdigit():return True return False 测试示例 string1 = "Hello123"string2 = "HelloWorld"print(contains_digit(string1)) # 输出 True print(contains_digit(...
无茂果糖: 在类中,self只能在函数中使用,表示的是实例属性,就是每个实例可以设置不值,而不相互影响.如果在类级别使用没有self的属性,是类属性,一般作为全局变量来用的.如果解决了您的问题请采纳!如果未解决请继续追问!
西林县18094162206: 如何理解并正确使用python中的self?
无茂果糖: 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值.这个特别的变量指对象本身,按照惯例它的名称是self. 虽然你可以给这个参数任...
西林县18094162206: 怎么判断 Python 对象是否包含某个属性 - ?
无茂果糖: 方法一:通过异常捕捉来实现逻辑 class FooClass:pass k = FooClass() try: #do some thing you need print k.att except AttributeError as e: #error: has not attribute pass方法二:调用hasattr方法 hasattr(object, name) 说明:判断对象object是否包含...
西林县18094162206: python的init中的self问题具体是什么? - ?
无茂果糖: __init__()是类的构造函数,在建立对象时调用.self是对“对象”自身的引用.相当于c++中的this.python规定:访问类成员时,需要在前面加上this.这里,this.name = name表示为Person类添加了属性name.如果变量前不加this,则视为...
西林县18094162206: python中的 -- init--(self)是什么意思呢 - ?
无茂果糖: Python中,__init__()方法是所谓的对象的“构造函数”,负责在对象初始化时进行一系列的构建操作 假设有如下类: class worker:pass在Python中,对某个类实例进行成员赋值,可以创建不存在的成员:>>>a=worker() >>>a.pay=55000 >...
西林县18094162206: 关于Python中的self - ?
无茂果糖: 一切对象都可以作为函数(或方法)的参数啊 比如列表,字典,或者一个object 只是这里如果object自身作为参数可以省略而已
西林县18094162206: Python 方法中变量加self和不加的区别 - ?
无茂果糖: Python的类中引用成员变量必须加self 类(class)初始化之后会得到实例(instance). self就是用于代表初始化的到的实例. 明确地写一个self参数,使得类的方法(method)和普通的函数(function)本质上没有差异,所有的输入参数都显示地传递到方法/函数当中. 当然作为类的方法,作用的对.self是只有在类中才会有的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. 但self的名称并不是一定的,在python中self不是关键词.在初始化函数中可以把self换成任意名字.
西林县18094162206: python 什么是隐藏属性 - ?
无茂果糖: class A: def __init__(self): self.__X = 3__X这个就是隐藏属性,主要区别是属性名前面是两个下划线
西林县18094162206: python中方法和函数的区别是什么?什么时候要带self? - ?
无茂果糖: 你的问题本身就有问题,方法其实就是函数只不过他在类里面叫他为方法,你应该看的是类的定义与函数的区别,class是类,他里面的self是表示通过类生成的对象
西林县18094162206: Python 运算符重载中 -- add--(self,other)的other.x如何理解??
无茂果糖: 估计是讲不明白.只能尽力.面向对象的基础需要再理解一下.self是第一个参数.在python里是指“实例”本身.就是自己. 这个class A有一个属性是x other是第二个参数,它代表另一个class A的实例.当然它也有一个属性x __add__是一个重载加号的函数.意思是将两个class A实例相加,结果等于两个实例的x变量相加之和.other.x与self.x当然是指不同实例中的变量x