Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从类外部向类添加方法_Python_Python 3.x_Class_Methods - Fatal编程技术网

Python 从类外部向类添加方法

Python 从类外部向类添加方法,python,python-3.x,class,methods,Python,Python 3.x,Class,Methods,我想从我的类外部将此方法添加到我的类中。我还想从我的类内部调用我的方法(method1)。将“家庭作业”的值更改为0 def method1(self): print("Processing.....") print("Done :D") self.homework = 0 class Sss: homework = 10 def homeworkremover(self): Sss.method1

我想从我的类外部将此方法添加到我的类中。我还想从我的类内部调用我的方法(method1)。将“家庭作业”的值更改为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来更改“家庭作业”的值呢?谢谢。

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

但要使其发挥作用,只需更换:

Sss.method1()

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

在旁注上,而不是

Sss.method1 = method1
最好使用:

self.__class__.method1 = method1

(不太依赖于类名,在类继承场景中也能更好地工作)

嗯,不,这在语义上是两件不同的事情。它是否“在继承情况下更好”取决于您的意图。如果我使用Sss.method1(self)而不是Sss.method1(),会发生什么?method1是否属于Sss类?好的,伙计们,我已经解决了我的问题,谢谢你们的回答
self.__class__.method1 = method1