Python 什么是包含,什么可以调用包含函数
这是我的密码:Python 什么是包含,什么可以调用包含函数,python,Python,这是我的密码: class a(object): d='ddd' def __contains__(self): if self.d:return True b=a() print b.contains('d') # error print contains(b,'d') # error 要让您的代码执行某些操作(尽管没有任何用处): 这个 self.d是字符串'ddd'。非空字符串总是真实的:当您在'ddd'上使用if时,它将始终像您说的if True:一
class a(object):
d='ddd'
def __contains__(self):
if self.d:return True
b=a()
print b.contains('d') # error
print contains(b,'d') # error
要让您的代码执行某些操作(尽管没有任何用处): 这个
self.d
是字符串'ddd'
。非空字符串总是真实的:当您在'ddd'
上使用if
时,它将始终像您说的if True:
一样
我想你的意思可能是:
def __contains__(self, item):
return item in self.d
中的是在幕后调用\uuuuu contains\uuuu
方法的操作符。与所有特殊方法一样(以\uuuuuu
开头和结尾的“神奇名称”),不是直接调用的方法(除非在非常特殊的情况下,例如up=调用超类):,这些方法被称为内置和运算符操作的一部分。在\uuuu包含
的情况下,所涉及的操作员是中的——即“安全壳检查”操作员
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def __contains__(self,param1):
return True if param1 in self.__dict__.keys() else False
>>> p = Person('Robby Krieger',23)
>>> 'name' in p
True
以类a
为实例(除了修复打字错误,并使用True
而不是True
!-)和b
作为实例,b
中的print'x'将打印True
,对b
的任何其他包含检查也会打印True
,由于b
始终返回True
(因为self.d
,一个非空字符串为True)。
方法定义类实例在中出现在和不在
运算符中时的行为
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def __contains__(self,param1):
return True if param1 in self.__dict__.keys() else False
>>> p = Person('Robby Krieger',23)
>>> 'name' in p
True
让我们看一个非常简单的魔术方法示例\uuuuuu包含\uuuuu:
假设我有一个类Player,我的\uuu init\uu方法使用一个字符串参数name。大体上,我已经创建了一个类Player的对象(obj1)
现在,如果我想知道我的obj1(在本例中是obj1的属性名)是否包含特定的字符串、子字符串或字母表,我必须实现\uuuuuuuuu contains\uuuu方法,如示例所示
class Player():
def __init__(self, name):
self.name=name
def __contains__(self, substring):
if substring in self.name:
return True
else:
return False
obj1=Player("Sam")
print ('am' in obj1) ----> True
print ('ami' in obj1) ----> False
如果我的类有\uuu包含方法,我可以在我的自定义对象上调用内置操作符,如示例所示
class Player():
def __init__(self, name):
self.name=name
def __contains__(self, substring):
if substring in self.name:
return True
else:
return False
obj1=Player("Sam")
print ('am' in obj1) ----> True
print ('ami' in obj1) ----> False
更简单地说,您可以为\uuuuuuu contains\uuuuu
编写:在self中返回param1.\uuuu dict\uuuuu.keys()