Python 将方法用作类方法而不声明为类方法

Python 将方法用作类方法而不声明为类方法,python,methods,Python,Methods,我对一个类进行了子类化,该类定义了一个方法format,我想稍微重写一下该方法: class MyClass(SomeClass): def format(self, foo): # do some conditionals on foo r = SomeClass.format(self, foo) return r 在超类中,format被定义为一个实例方法,就像它在子类中一样 为什么CPython允许这样做?为什么要将一个方法定义

我对一个类进行了子类化,该类定义了一个方法
format
,我想稍微重写一下该方法:

class MyClass(SomeClass):

    def format(self, foo):
        # do some conditionals on foo
        r = SomeClass.format(self, foo)
        return r
在超类中,
format
被定义为一个实例方法,就像它在子类中一样


为什么CPython允许这样做?为什么要将一个方法定义为
@classmethod

a().foo()
只是
a.foo(a())
的一个语法糖。这与子类无关。我看不出在哪里使用方法作为类方法。您有一个
self
参数。@JohnColeman
SomeClass.format
调用的语法是我所知道的类方法。@DeepSpace哦,我不知道,我可以在文档中的某个地方读到更多吗?但是
self
参数的存在意味着您正在使用绑定到实例的方法。比较:
s='test'
然后
str.upper(s)
相当于
s.upper()