【问题标题】:Adding method to the class from outside of the class从类外部向类添加方法
【发布时间】:2021-03-19 21:02:01
【问题描述】:

我想从我的班级外部将此方法添加到我的班级。我也想从班级内部调用我的方法(method1)。将 'homework' 的值更改为 0

def method1(self):
    print("Processing.....")
    print("Done :D")
    self.homework = 0

class Sss:
    homework = 10
    def homeworkremover(self):
        Sss.method1 = method1
        Sss.method1()

a = Sss()
print(a.homeworkremover())

但我收到了错误代码:

TypeError: method1() missing 1 required positional argument: 'self'

那么我怎样才能将这个方法添加到我的班级,我怎样才能通过在班级内部使用 method1 来更改“作业”的值?谢谢。

【问题讨论】:

    标签: python python-3.x class methods


    【解决方案1】:

    这个例子看起来很做作,我看不出它在当前形式中的用途(从在类的实例上执行的方法中为类添加新方法)。

    但要使其正常工作,只需替换:

    Sss.method1()
    

    self.method1()
    

    因为添加的方法旨在作为实例方法而不是类方法。

    附带说明,而不是

    Sss.method1 = method1
    

    使用起来可能会更好:

    self.__class__.method1 = method1
    

    (对类名的依赖较少,在类继承场景下效果更好)

    【讨论】:

    • 嗯,这在语义上是两个不同的东西。它是否“在继承情况下更好”取决于您的意图
    • 如果我使用 Sss.method1(self) 而不是 Sss.method1(),会发生什么?method1 会属于 Sss 类吗?
    • 好的,我已经解决了我的问题,感谢您的回答
    猜你喜欢
    • 2021-06-12
    • 2021-07-19
    • 2017-08-20
    • 2011-05-23
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2013-09-10
    相关资源
    最近更新 更多