Python对象绑定(bind)方法

标签 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()

    def Items(self):
        print self.items

当我尝试 stack.empty它说<bound method Stack.empty of <__main__.Stack object at 0x01C437B0>> .我不知道我做错了什么。

最佳答案

您只是忘记了调用方法:

stack.empty()

如果您必须让它作为属性使用,请使用 property object :

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

你可以在这里使用 not,空容器在 bool 上下文中被认为是 false,如果容器 not self.items 产生 True是空的:

@property
def empty(self):
    return not self.items

Demo(没有属性来演示方法):

>>> 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

关于Python对象绑定(bind)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371062/

相关文章:

python - 如何将 Python 和 pip 或 conda 包添加到 DDEV

python - 为什么在 Python 或 R 中导入 csv 时大小会加倍

python - Linkedin API如何获取公司状态更新? Python

javascript - Django:从静态文件目录中的js引用静态文件

python - 构造函数中动态初始化数据库

python - 我的 Sprite 在 Pygame 中无法正确显示

python - 测试一个使用子进程生成 bash 子 shell 的 python 脚本..这可能吗?

python - 使用与条件匹配的第一个值创建一个新列

python - 如何在多个类中重写而不重复代码 (Python)

python - 连接由主键链接的 2 个 JSON 输入