在类内赋值一个类外的函数,会自动加了个 self 参数。

2021-08-13 00:30:49 +08:00
 yagamil

代码如下

def myFun(*args,**kwargs):
    print('argument in myFun',args,kwargs)
    return True

class OneArgumentSeries():

    def __init__(self, s1, s2):
        try:
            series = self.func(s1,s2)
        except Exception as e:
            raise ValueError(e)
        else:
            print(series)


class ChildSeries(OneArgumentSeries):

    func=myFun


obj = ChildSeries(s1='A',s2='B')

结果如下:

argument in myFun (<__main__.ChildSeries object at 0x00000000025E8130>, 'A', 'B') {}
True

self.func(s1,s2) 传了 2 个参数进去,实际调用的时候把 self 也传进去了。 好奇有什么操作可以只限定这两个参数,不传入 self ?

905 次点击
所在节点    Python
3 条回复
frostming
2021-08-13 09:35:48 +08:00
func = staticmethod(myFun)
princelai
2021-08-13 09:39:03 +08:00
func=staticmethod(myFun)
yagamil
2021-08-13 10:55:07 +08:00
@frostming @princelai
谢谢,可行。第一次这么用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/795462

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX