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爬虫,爬虫的主要模块是三个:请求、解析、储存。
- 请求
requests(第三方模块):Requests: HTTP for Humans
对HTTP协议进行高度封装的库,比系统自带的urllib系列的库好用很多。2、3兼容的库。
更多介绍:xlzd.me/2015/12/11/requ
- 解析:
bs4(即beautifulsoup,第三方模块):crummy.com/software/Bea
解析HTML的神器。比正则好用很多。2、3兼容的库。
- 储存:
csv(系统模块):docs.python.org/2/libra
把数据写成csv格式。
pymongo(第三方模块):api.mongodb.com/python/
把数据写入MongoDB(mongodb.com/)
MySQL-python(第三方模块):pypi.python.org/pypi/My (爬虫第三方模块内容摘自知乎)
以上