相关疑难解决方法(0)

__contains__做了什么,可以调用__contains__函数

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

python

30
推荐指数
5
解决办法
6万
查看次数

在 Python 中,in 操作符是如何实现的?它是否使用迭代器的 next() 方法?

在 Python 中,众所周知,在检查迭代器(列表、字典等)中的成员资格并在字符串中查找子字符串。我的问题是关于如何实现in以实现以下所有内容:1) 测试成员资格,2) 测试子字符串和 3) 访问 for 循环中的下一个元素。例如,当for i in myList:或if i in myList:被执行时,in callmyList.__next__()吗?如果它确实调用了它,那么它如何处理字符串,因为str对象不是迭代器(如在 Python 2.7 中检查的那样),因此没有next()方法?如果无法详细讨论in的实现,请在此处提供其要点。

python in-operator

11
推荐指数
2
解决办法
2383
查看次数

如果让 Python 中的语法

来自 Swift,我在使用 .None 类型的 Python 时遇到了一些困难。None如果在数组中找不到我要查找的对象,我有一些函数可能会返回。

然后我必须按如下方式嵌套我的代码:

varA = self.getVariableByName(Variables.varA) 
if varA is None: 
    varB = self.getVariableByName(Variables.varB)
    varC = self.getVariableByName(Variables.varC) 
    if varB is not None and varC is not None: 
        # Do something with varB and varC 
Run Code Online (Sandbox Code Playgroud)

在 Swift 中,我曾经能够在 if 语句中绑定变量

let f = getVariableByName
if f(Variables.varA) == nil, let varB = f(Variables.varB), let varC = f(Variables.varC) {
    // Do something with varB and varC
}
Run Code Online (Sandbox Code Playgroud)

什么是更“pythonic”的处理方式None?

python

6
推荐指数
2
解决办法
4184
查看次数

Python:使动态创建的类(如类本身)可迭代?

我从这个代码片段开始,根据我的理解,它实际上是一个类别工厂,可以模拟其他语言的"枚举"类型:

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)
Run Code Online (Sandbox Code Playgroud)

(我从这里拿走:我如何在Python中表示'Enum'?)

我知道它是如何工作的,它确实如此,但是我想让我的动态生成的类,类型为'Enum',可迭代,以便我可以执行以下操作以进行完整性检查:

MyEnum = enum('FOO', 'BAR', 'JIMMY')
def func(my_enum_value):  # expects one of the MyEnum values
    if not my_enum_value in MyEnum:
        raise SomeSortOfException
Run Code Online (Sandbox Code Playgroud)

但是,为了使完整性检查工作,我需要使MyEnum可迭代.我读到这里:http://pydanny.blogspot.com/2007/10/required-methods-to-make-class-iterable.html,我需要添加ITER LEN 包含和的GetItem方法来东西,以使其可迭代.我开始走这条路(改写枚举代码)但被卡住了:

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    enums['_enums'] = enums.copy() # (so I'd have them in the Class in order to use for the methods I'll be implementing to make it iterable) …
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
360
查看次数

如何使用类支持 python 中的“in”操作

我要修改什么魔法方法来支持in操作员。这是我正在尝试做的事情的一个例子:

class DailyPriceObj:
    def __init__(self, date, product_id=None):
        self.date = date
        self.product_id = product_id
        self.sd_buy = None

l = list()
l.append(DailyPriceObj(date="2014-01-01"))
DailyPriceObj(date="2014-01-01") in l # how to get this to return True?
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望我的对象“像”date属性一样工作,所以我可以使用它来查看它是否obj在可交互中(date这里应该是一个唯一的字段)。

python

2
推荐指数
1
解决办法
1046
查看次数

Python"in"魔术方法?

在python中有"in"方法的魔术方法吗?例如,

y = [5, 4, 3, 2,1]
5 in y #returns true
Run Code Online (Sandbox Code Playgroud)

如果是的话,它是什么,如果不是,那将如何实现它.

python python-3.x

1
推荐指数
1
解决办法
218
查看次数

标签 统计

python ×6

in-operator ×1

python-3.x ×1