Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是包含,什么可以调用包含函数_Python - Fatal编程技术网

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()