Quokka

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Python的面向对象

Python的面向对象跟其他语言的面向对象不少地方都是一样的,我来说一些我记得的不一样的地方。
比如吧在很多地方都会看见很像关键字的东西,但是其代表的意思可能跟平时有些不一样比如

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt(

以上self代表类的实例而不是类

在其他很多实例化类的编程语言中一般都是用new来创建实例对象。但是在Python中没有这个关键字,在Python中创建实例对象就像调用函数一样:

"创建 First 类的第一个对象"
emp1 = First("One", 2000)
"创建 First 类的第二个对象"
emp2 = First("Two", 5000)

习惯了各种new的情况下突然不用new了,还有点不习惯呢!

Python还有很多内置属性:
dict : 类的属性__doc__ :类的文档字符串 name: 类名 module: 类定义所在的模块__bases__ : 类的所有父类构成元素

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class Employee:
   '所有员工的基类'
   empCount = 0
 
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount
 
   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
 
print "Employee.__doc__:", Employee.__doc__
print "Employee.__name__:", Employee.__name__
print "Employee.__module__:", Employee.__module__
print "Employee.__bases__:", Employee.__bases__
print "Employee.__dict__:", Employee.__dict__

输出结果为:

Employee.__doc__: 所有员工的基类
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__', 'displayCount': <function displayCount at 0x10a939c80>, 'empCount': 0, 'displayEmployee': <function displayEmployee at 0x10a93caa0>, '__doc__': '\xe6\x89\x80\xe6\x9c\x89\xe5\x91\x98\xe5\xb7\xa5\xe7\x9a\x84\xe5\x9f\xba\xe7\xb1\xbb', '__init__': <function __init__ at 0x10a939578>}

在python中继承中的一些特点:

  • 1:在继承中基类的构造(init()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
  • 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
  • 3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
  • 如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。

Python的异常处理机制

Python的异常处理也是用Try...except... try...finally...此类。大家可以查一下常见的的Python异常类型

Python常用第三方模块

Python的第三方库有很多,经常听人安利,但是也有人在吐槽不够用【摊手】
我听得最多要数Python爬虫,爬虫的主要模块是三个:请求、解析、储存。

  1. 请求

requests(第三方模块):Requests: HTTP for Humans

对HTTP协议进行高度封装的库,比系统自带的urllib系列的库好用很多。2、3兼容的库。

更多介绍:xlzd.me/2015/12/11/requ

  1. 解析:

bs4(即beautifulsoup,第三方模块):crummy.com/software/Bea

解析HTML的神器。比正则好用很多。2、3兼容的库。

  1. 储存:

csv(系统模块):docs.python.org/2/libra

把数据写成csv格式。

pymongo(第三方模块):api.mongodb.com/python/

把数据写入MongoDB(mongodb.com/)

MySQL-python(第三方模块):pypi.python.org/pypi/My (爬虫第三方模块内容摘自知乎)
以上

posted on 2017-10-25 19:34  Quokka  阅读(137)  评论(0编辑  收藏  举报