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

史上最全Python面向对象编程

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

这两者也是Python内建,无需自定义。

  1. class Foo: 
  2.     pass 
  3. obj = Foo() 
  4. print(obj.__module__) 
  5. print(obj.__class__) 

运行结果:

  1. main 

4. del()

析构方法,当对象在内存中被释放时,自动触发此方法。

注:此方法一般无须自定义,因为Python自带内存分配和释放机制,除非你需要在释放的时候指定做一些动作。析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

  1. class Foo: 
  2.     def __del__(self): 
  3.         print("我被回收了!") 
  4.  
  5. obj = Foo() 
  6. del obj 

5. call()

如果为一个类编写了该方法,那么在该类的实例后面加括号,可会调用这个方法。

注:构造方法的执行是由类加括号执行的,即:对象 = 类名(),而对于call() 方法,是由对象后加括号触发的,即:对象() 或者 类()()

  1. class Foo: 
  2.     def __init__(self): 
  3.         pass 
  4.     def __call__(self, *args, **kwargs): 
  5.         print('__call__') 
  6. obj = Foo()     # 执行 __init__ 
  7. obj()       # 执行 __call__ 

可以用Python内建的callable()函数进行测试,判断一个对象是否可以被执行。

  1. callable(Student()) 

运行结果:

  1. True 

6. dict

列出类或对象中的所有成员!非常重要和有用的一个属性,Python自建,无需用户自己定义。

  1. class Province: 
  2.     country = 'China' 
  3.     def __init__(self, name, count): 
  4.         self.name = name 
  5.         self.count = count 
  6.     def func(self, *args, **kwargs): 
  7.         print('func') 
  8. # 获取类的成员 
  9. print(Province.__dict__) 
  10. # 获取 对象obj1 的成员  
  11. obj1 = Province('HeBei',10000) 
  12. print(obj1.__dict__) 
  13. # 获取 对象obj2 的成员  
  14. obj2 = Province('HeNan', 3888) 
  15. print(obj2.__dict__) 

7. str()

如果一个类中定义了str()方法,那么在打印对象时,默认输出该方法的返回值。这也是一个非常重要的方法,需要用户自己定义。

下面的类,没有定义str()方法,打印结果是:

  1. class Foo: 
  2.     pass 
  3. obj = Foo() 
  4. print(obj) 
  5. 定义了__str__()方法后,打印结果是:'jack'。 
  6. class Foo: 
  7.     def __str__(self): 
  8.         return 'jack' 
  9. obj = Foo() 
  10. print(obj) 

8、getitem__()、_setitem_()、__delitem()

取值、赋值、删除这“三剑客”的套路,在Python中,我们已经见过很多次了,比如前面的@property装饰器。

Python中,标识符后面加圆括号,通常代表执行或调用方法的意思。而在标识符后面加中括号[],通常代表取值的意思。Python设计了getitem()、setitem()、delitem()这三个特殊成员,用于执行与中括号有关的动作。它们分别表示取值、赋值、删除数据。

也就是如下的操作:

  1. a = 标识符[] : 执行__getitem__方法 
  2. 标识符[] = a  : 执行__setitem__方法 
  3. del 标识符[] : 执行__delitem__方法 

如果有一个类同时定义了这三个魔法方法,那么这个类的实例的行为看起来就像一个字典一样,如下例所示:

  1. class Foo: 
  2.     def __getitem__(self, key): 
  3.         print('__getitem__',key) 
  4.     def __setitem__(self, key, value): 
  5.         print('__setitem__',key,value) 
  6.     def __delitem__(self, key): 
  7.         print('__delitem__',key) 
  8. obj = Foo() 
  9. result = obj['k1']      # 自动触发执行 __getitem__ 
  10. obj['k2'] = 'jack'      # 自动触发执行 __setitem__ 
  11. del obj['k1']             # 自动触发执行 __delitem__ 

9. iter()

(编辑:核心网)

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

热点阅读