python学习--基础2类

import pdb

class Stack:
    """simple Stack."""    #这串string可以通过 Stack.__doc__ 调到

    # 这个类似类静态成员了,被整个类拥有
    population = 0

    #__init__()定义该类的构造函数,self.xxx都将成为本类的成员变量
    def __init__(self):
        self.items = []
        Stack.population += 1    #这可以用于查看我们共用 Stack 实例化了多少个对象了

    #__str__()函数定义对该类型的对象进行强制类型转换str()的行为
    def __str__(self):
        strItems = list(map(str, self.items)) 
        return "<=".join(strItems)

    #__call__()函数定义对该类型的对象abc进行调用的行为eg. y = abc(x)
    def __call__(self, data):
        if isinstance(data, list):
            for i in data:
                self.push(i)
        else:
            self.push(data)

    #这样就可以通过[]访问我们这个类型的对象
    def __getitem__(self, key):
        return self.items[key];
    def __setitem__(self, key, item):
        self.items[key] = item

    def isEmpty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item) #self.items.insert(0, item)则是在第0个元素前插入item
    def pop(self):
        return self.items.pop() #self.items.pop(0)则是弹出第0个元素
    def peek(self):
        return self.items[len(self.items) - 1]
    def size(self):
        return len(self.items)

    @classmethod
    def how_many(abc):               # 类似静态成员函数,所以加上 @classmethod修饰
        pdb.set_trace()
        print("We have {} Stacks.".format(abc.population))


if __name__ == "__main__":
    a = Stack()
    a.push(1.62)
    a.push(3)
    a.push('hello')
    a([3.14, 'bingo', 4325])
    print(str(a))
    print(a[4])
    a[1] = 9.34
    print(str(a))

    b = Stack()
    b([1,2,3,4,5])
    print(b)

    print(Stack.how_many())

self.__dict__ 将返回本类所有成员变量(属性)组成的字典。所以本类存放的所有东西,可以直接放在self.xx里,然后结合 __getitem__() 方法,外部把他当成一个字典使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值