Python中对象的方法

Python中对象的方法,python,object,methods,Python,Object,Methods,我只是为自己做了一个玩具的例子,但它不起作用,我无法让它起作用。是否有人知道为什么这不起作用以及如何使其起作用: class A(object): #def __init__(): #pass def do1(): print("foo") def do2(): print("Hello") Al = A Al.do1() TypeError:必须以实例作为第一个参数调用未绑定的方法do1()(没有任何

我只是为自己做了一个玩具的例子,但它不起作用,我无法让它起作用。是否有人知道为什么这不起作用以及如何使其起作用:

class A(object):
    #def __init__():
        #pass
    def do1():
        print("foo")
        def do2():
            print("Hello")

Al = A 
Al.do1()

TypeError:必须以实例作为第一个参数调用未绑定的方法do1()(没有任何结果)

在代码变量A1中,它引用的是类而不是实例,请创建类的实例

Al = A()
然后运行你的方法

Al.do1()

您需要调用类来装箱一个正确的实例,并将
self
关键字传递给封闭函数,以便为要处理的实例提供一个句柄:

class A(object):
    #def __init__():
        #pass
    def do1(self):
        print("foo")
        def do2():
            print("Hello")

Al = A()
Al.do1()
请注意,在调用函数后,如果不将
self
传递给函数,则会出现
TypeError

TypeError: do1() takes 0 positional arguments but 1 was given
或者,正如@Padraic Cunningham在注释中提到的,您可以使用它作为一个装饰器来包装您的函数,这使得python不会将第一个默认参数(self)传递给它


Al=A()谢谢!这就解决了问题。你想用剩下的代码做什么?我需要从对象外部调用该对象的第二个方法,但我不知道怎么做,因为它在另一个方法内部。你知道吗,偶然间?如果它实际上是静态的,你实际上不需要selfmethod@PadraicCunningham是的,更新了问题,谢谢关注!
class A(object):
    #def __init__():
        #pass
    @staticmethod
    def do1():
        print("foo")
        def do2():
            print("Hello")

Al = A()
Al.do1()