在类方法中定义函数是不是pythonic的吗?

时间:2016-03-09 00:05:02

标签: python

PyLint告诉我,我的一个类方法不需要是一个方法,但可能只是一个类中的函数,因为它没有使用任何类属性。这让我做了我认为“糟糕”的事情,但也许他们是Pythonic。下面的代码是Python希望我们做的吗?

class TestClass(ParentClass):
    def __init__(self):
        def callbackfunction(text):
            print("hello")
        ParentClass.map_event_to_callback(ParentClass.event, callbackfunction)

其中ParentClass.event向其回调发出text,但我们只是忽略该打印"hello"。更简单:

class TestClass():
    def __init__(self, text):
        def printhello(text):
            print("hello")
        printhello(text)

假设text之后我不关心printhello__init__

1 个答案:

答案 0 :(得分:1)

为回调创建嵌套函数就好了。它甚至允许该函数访问父函数中的任何本地(作为闭包)。

如果您需要执行的只是一个表达式,则可以使用lambda

class TestClass(ParentClass):
    def __init__(self):
        ParentClass.map_event_to_callback(ParentClass.event, lambda text: print("hello"))
相关问题