Python对象绑定方法

Python对象绑定方法,python,Python,我制作了这个程序: class Stack(object): def __init__(self): self.items = [] def empty(self): return self.items == [] def push(self, item): return self.items.append(item) def pop(self): return self.items.pop()

我制作了这个程序:

class Stack(object):
    def __init__(self):
        self.items = []

    def empty(self):
        return self.items == []

    def push(self, item):
        return self.items.append(item)
    def pop(self):
        return self.items.pop()

    def Items(self):
        print self.items
当我尝试堆栈.empty时,它会显示
。我不知道我做错了什么

您只是忘记了调用该方法:

stack.empty()
>>> class Stack(object):
...     def __init__(self):
...         self.items = []
...     def empty(self):
...         return not self.items
...     def push(self, item):
...         return self.items.append(item)
...     def pop(self):
...         return self.items.pop()
... 
>>> stack = Stack()
>>> stack.empty
<bound method Stack.empty of <__main__.Stack object at 0x10211c090>>
>>> stack.empty()
True
>>> stack.push('foo')
>>> stack.empty()
False
>>> stack.pop()
'foo'
>>> stack.empty()
True
如果必须将其用作属性,请使用:

您可以在此处使用
not
,在布尔上下文中,空容器被视为false,
not self。如果容器为空,则项目
生成
True

@property
def empty(self):
    return not self.items
演示(没有
属性来演示该方法):

类堆栈(对象): ... 定义初始化(自): ... self.items=[] ... def为空(自我): ... 不返回自己的项目 ... def推送(自身,项目): ... 返回self.items.append(item) ... def pop(自我): ... 返回self.items.pop() ... >>>stack=stack() >>>空的 >>>stack.empty() 真的 >>>stack.push('foo') >>>stack.empty() 假的 >>>stack.pop() “福” >>>stack.empty() 真的
您只是忘记了调用该方法:

stack.empty()
>>> class Stack(object):
...     def __init__(self):
...         self.items = []
...     def empty(self):
...         return not self.items
...     def push(self, item):
...         return self.items.append(item)
...     def pop(self):
...         return self.items.pop()
... 
>>> stack = Stack()
>>> stack.empty
<bound method Stack.empty of <__main__.Stack object at 0x10211c090>>
>>> stack.empty()
True
>>> stack.push('foo')
>>> stack.empty()
False
>>> stack.pop()
'foo'
>>> stack.empty()
True
如果必须将其用作属性,请使用:

您可以在此处使用
not
,在布尔上下文中,空容器被视为false,
not self。如果容器为空,则项目
生成
True

@property
def empty(self):
    return not self.items
演示(没有
属性来演示该方法):

类堆栈(对象): ... 定义初始化(自): ... self.items=[] ... def为空(自我): ... 不返回自己的项目 ... def推送(自身,项目): ... 返回self.items.append(item) ... def pop(自我): ... 返回self.items.pop() ... >>>stack=stack() >>>空的 >>>stack.empty() 真的 >>>stack.push('foo') >>>stack.empty() 假的 >>>stack.pop() “福” >>>stack.empty() 真的
在将
empty
定义为方法时,您需要使用
()
调用
,否则您可以使用python整洁的“属性”功能,只需按如下方式修改代码:

@property
def empty(self):
    return self.items == []
然后您可以作为属性
self.empty


有关详细信息,请转到在定义
empty
为您需要使用
()
调用的方法时,否则您可以使用python的整洁的“属性”功能,只需如下修改您的代码:

@property
def empty(self):
    return self.items == []
然后您可以作为属性
self.empty


有关更多信息,请转到

Yeah,即检查堆栈是否为空。如果不清楚,很抱歉。请注意,
Stack.push()
方法将始终返回
None
。这没关系,但更常见的做法是在编写时不使用
return
语句。是的,那就是检查堆栈是否为空。如果不清楚,很抱歉。请注意,
Stack.push()
方法将始终返回
None
。这没关系,但更常见的做法是在编写时不使用
return
语句。