python编程学习进度十

 今天学习了python中一些关于类代码编写的知识,以及其中的一些细节:

总结:

1、类其实也是一种对象。

在类定义外创建的函数也可以成为方法

>>>def upperName(self):
...  return self.name.upper()

>>>rec.method = upperName

细节:

1、和def一样,class也是可执行代码,运行时才会产生类对象。调用超类的构造器是可以的,在子类的构造方法中使用Super.__init__()即可。抽象超类有的方法没有提供实现,而是由子类提供。类的运算符重载通过修改诸如__add__(对应于+)等方法来实现。具体细节请参考原书。下面是一个修改__iter__获得用户定义的迭代器的例子:

class Squares:
 def __init__(self,start,stop):
  self.value = start - 1
  self.stop = stop
 def __iter__(self):
  return self
  def next(self):
  if self.value == self.stop:
   raise StopIteration
  self.value += 1
  return self.value ** 2

%python
>>>from iters import Squares
>>>for i in Squares(1,5):
...  print i,
...
1 4 9 16 25

2、右侧方法如__radd__中,self在右侧,和__add__相反。

__call__可以拦截调用,用使用函数的方法使用类。对改写了__call__的类prod,实例化x = prod(2),x(3)可以直接使用。

__del__是析构器,但在Python中很少使用析构方法。命名空间其实是普通的字典。

你可能感兴趣的:(python编程学习进度十)