加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

史上最全Python面向对象编程

发布时间:2019-03-27 13:15:21 所属栏目:建站 来源:浪子燕青
导读:面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别。 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 3. 写一个函数完成某个功能 4. 写一个函数完成某个功能 5. 写一个函数完成某个功能 6. 写一个函数完成某个功能 7. 写一

这是迭代器方法!列表、字典、元组之所以可以进行for循环,是因为其内部定义了 iter()这个方法。如果用户想让自定义的类的对象可以被迭代,那么就需要在类中定义这个方法,并且让该方法的返回值是一个可迭代的对象。当在代码中利用for循环遍历对象时,就会调用类的这个iter()方法。

普通的类:

  1. class Foo: 
  2.     pass 
  3. obj = Foo() 
  4. for i in obj: 
  5.     print(i) 
  6. # 报错:TypeError: 'Foo' object is not iterable<br># 原因是Foo对象不可迭代 
  7. 添加一个__iter__(),但什么都不返回: 
  8. class Foo: 
  9.     def __iter__(self): 
  10.         pass 
  11. obj = Foo() 
  12. for i in obj: 
  13.     print(i) 
  14. # 报错:TypeError: iter() returned non-iterator of type 'NoneType' 
  15. #原因是 __iter__方法没有返回一个可迭代的对象 

返回一个个迭代对象:

  1. class Foo: 
  2.     def __init__(self, sq): 
  3.         self.sq = sq 
  4.     def __iter__(self): 
  5.         return iter(self.sq) 
  6. obj = Foo([11,22,33,44]) 
  7. for i in obj: 
  8.     print(i) 

最好的方法是使用生成器:

  1. class Foo: 
  2.     def __init__(self): 
  3.         pass 
  4.     def __iter__(self): 
  5.         yield 1 
  6.         yield 2 
  7.         yield 3 
  8. obj = Foo() 
  9. for i in obj: 
  10.     print(i) 

10、len()

在Python中,如果你调用内置的len()函数试图获取一个对象的长度,在后台,其实是去调用该对象的len()方法,所以,下面的代码是等价的:

  1. len('ABC') 
  2. 'ABC'.__len__() 

Python的list、dict、str等内置数据类型都实现了该方法,但是你自定义的类要实现len方法需要好好设计。

11. repr()

这个方法的作用和str()很像,两者的区别是str()返回用户看到的字符串,而repr()返回程序开发者看到的字符串,也就是说,repr()是为调试服务的。通常两者代码一样。

  1. class Foo: 
  2.     def __init__(self, name): 
  3.         self.name = name 
  4.     def __str__(self): 
  5.         return "this is %s" % self.name 
  6.     __repr__ = __str__ 

12. add__: 加运算 _sub_: 减运算 _mul_: 乘运算 _div_: 除运算 _mod_: 求余运算 __pow: 幂运算

这些都是算术运算方法,需要你自己为类设计具体运算代码。有些Python内置数据类型,比如int就带有这些方法。Python支持运算符的重载,也就是重写。

  1. class Vector: 
  2.    def __init__(self, a, b): 
  3.       self.a = a 
  4.       self.b = b 
  5.    def __str__(self): 
  6.       return 'Vector (%d, %d)' % (self.a, self.b) 
  7.    def __add__(self,other): 
  8.       return Vector(self.a + other.a, self.b + other.b) 
  9. v1 = Vector(2,10) 
  10. v2 = Vector(5,-2) 
  11. print (v1 + v2) 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读