相关疑难解决方法(0)

是否可以在不更改同一类的所有其他实例的情况下更改实例的方法实现?

我不太了解python(之前从未使用过它:D),但我似乎无法在网上找到任何东西.也许我只是没有谷歌正确的问题,但在这里我去:

我想更改实例的特定方法的实现.当我用Google搜索它时,我发现你可以这样做,但它改变了同一个类的所有其他实例的实现,例如:

def showyImp(self):
    print self.y

class Foo:
    def __init__(self):
        self.x = "x = 25"
        self.y = "y = 4"

    def showx(self):
        print self.x

    def showy(self):
         print "y = woohoo"

class Bar:
    def __init__(self):
        Foo.showy = showyImp
        self.foo = Foo()

    def show(self):
        self.foo.showx()
        self.foo.showy()

if __name__ == '__main__':
    b = Bar()
    b.show()
    f = Foo()
    f.showx()
    f.showy()
Run Code Online (Sandbox Code Playgroud)

这不能按预期工作,因为输出如下:

x = 25

y = 4

x = 25

y = 4

我希望它是:

x = 25

y = 4

x = 25 …

python

20
推荐指数
4
解决办法
2万
查看次数

python中函数的len()

我有一个通常接受列表的函数,但有时也需要接受函数。有几种方法可以解决这个问题,但是能够len(foo)为给定的函数做这件事会非常有用foo

最后,我没有传入函数,而是传入了__len__定义了函数的可调用类。但这让我开始思考,因为在 python 中一切都是对象,函数可以具有属性等,只是出于好奇......

有没有办法给一个函数一个len?一个快速的谷歌没有提出任何东西。

我的尝试

def foo():
    return True

def my_len(self):
    return 5

foo.__len__ = my_len

len(foo)
Run Code Online (Sandbox Code Playgroud)

python function

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

标签 统计

python ×2

function ×1