《Dive into Python3》:class and iterators

       上一章学习了生成器,这一章学习类与迭代器,首先要知道什么是类,讲解类的定义时,讲了__init__()这个方法。在Python中一切皆对象,实例化类,实例化变量。最后是两个具体例子,实现了两个迭代器,一个是斐波拉契数列,一个是复数规则的迭代器。

按惯例上实例:

'''iterator_Fibonacci.py'''

class Fib:
    '''iterator that yields numbers in the Fibonacci sequence'''

    def __init__(self, max):
    '''使用__init__()方法对fib类进行初始化'''
        self.max = max

    def __iter__(self):
        self.a = 0
        self.b = 1
        return self

    def __next__(self):
        fib = self.a
        if fib > self.max:
            raise StopIteration
        self.a, self.b = self.b, self.a + self.b
        return fib

一、类的定义

  1. 定义一个类:可以自定义一个类,从自定义类或内置的类中继承类,也可以实例化自定义的类,像下面这样:
class example:
    pass

    pass 是Pyhon中的一个保留词,作占位符使用,意思是我定义了一个类,从句法上来说,需要定义一些方法或属性,我暂时还 未定义任何方法或属性,但以后会用到,于是用pass语句

    2.__init__() method:当一个类的实例被创建后,该方法第一个被调用,极易让人误认为这是类的构造函数,从专业上来说,不可以这样认为,因为在__init__()被调用时,对象已经被创建了,已经有了对该类新实例的有效引用。

    3.self参数:每个类方法的第一个参数,总是对当前类的实例的引用,大家约定俗成的命名该参数为self,这是不可改变的。In all class methods, self refers to the instance whose method was called. But in the specific case of the __init__() method, the instance whose method was called is also the newly created object. Although you need to specify self explicitly when defining the method, you do not specify it when calling the method; Python will add it for you automatically.(英文部分没看懂)'''

二 、实例化类与变量

在python中,实例化一个类很直接,只需调用这个类就可以,在上面的例子中,实例化类,就像函数一样,传递给__init__()所需的参数,返回值为新创建的对象。实例化变量也一样,举例来说,max作为一个参数传值,self.max作为全局变量,意味着可以在其他方法中调用他,是独立的,下面的fib.max就是max变量的一个实例,。

>>> import iterator_fibonacci
>>> fib = iterator_fibonacci.Fib(100)
>>> fib
<iterator_fibonacci.Fib object at 0x00000000034A1518>
>>> fib.__class__
<class 'iterator_fibonacci.Fib'>
>>> fib.__doc__
'iterator that yields numbers in the Fibonacci sequence'
>>> fib.max
100
>>> from iterator_fibonacci import Fib
>>> for n in Fib(100):
	print(n,end=' ')

	
0 1 1 2 3 5 8 13 21 34 55 89 
>>> 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值