python - 为什么我的类的 p.length() 返回 None ?

标签 python python-2.7

我正在尝试使用以下代码在 Python 中动态地将方法添加到类中:

class SomeClass():

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __len__(self):
        return len(self.name)

p = SomeClass("Bob", 22)

def f(v):
    print len(v)

SomeClass.length = f

print p.length()

len()功能取决于 __len__参数中使用的对象的方法,我期望输出为:

3

但是,我得到的输出为:

3
None

为什么会有None在输出中?

最佳答案

您没有从 f 返回任何内容。因此默认情况下将返回 None 。当您执行print p.length()时,p.length实际上会打印长度并返回None,这就是打印的内容。

相反,只需返回 f 的长度即可。

def f(v):
    return len(v)

关于python - 为什么我的类的 p.length() 返回 None ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38262035/

相关文章:

python - 如何在 Windrose.py 中插入我自己的值?

python-2.7 - 如何对数据框的行应用操作,但影响可变列?

python - 根据时间对列表进行聚类/分组(python)

Python 扩展 - 有效地构造和检查大整数

python - 如何为 python 2.7.9 安装 numpy

python - 如何在数据框中的新列中添加值?

python - 在 re.search 中重用已编译的正则表达式

python - Pandas :数首都困难

python - 您如何调试 Mako 模板?

python - Scrapy ItemLoader 项目组合