Python面向对象

  • 类中定义方法要带参数self,类中访问属性要用self.属性self类似于Java中的this

  • __init__()方法,相当于Java中的构造方法

  • __str__()方法,相当于Java中的toString()方法

  • for循环加上elsefor循环执行完后会执行else

  • 类中加__的属性和方法,相当于Java中用private声明

  • __del__()方法,相当于Android中activity的destroy()方法


  • 多继承,如果父类马和父类驴有一个同名方法,那么子类骡子调用先继承的那个
luozi.__mro__  #查看子类骡子的对象调用继承方法的先后顺序
  • Python设置私有属性或方法的方式其实是改名字,只要在私有属性或方法前加上_类名(一个下划线)就可以调用了

  • dir(类名)可以查看该类的私有方法

  • 类属性,相当于Java中的静态变量
    通过对象不能直接修改类属性,只会新建一个同名的实例属性

  • 类方法——用修饰器@classmethod来标识,第一个参数必须是类对象,一般以cls作为第一个参数

  • 静态方法——需要通过修饰器@staticmethod来进行修饰,静态方法不需要定义参数


  • __new__(cls)方法,至少要有一个参数cls,代表实例化的类;至少要有返回值,返回实例化后的实例。
    __new__(cls)方法,相当于Java中new Object()
    __init__(self)方法中的self,就是__new__(cls)方法返回的实例

  • 单例模式——只有一个对象,只执行一次__new__方法,只执行一次__init__方法

  • 捕获所有异常

try:
    num = 100
    print num
except Exception as errorMsg: #获取异常的信息描述
    print('产生错误了:%s'%errorMsg)
else: #如果没有捕获异常,执行else语句
    print('没有捕获到异常,真高兴')
  • Python用raise抛出一个异常,异常 / 错误继承Exception类 / Error类

  • __name__作为Python脚本直接执行,值是脚本名;被导入执行,值是main
if __name__ = 'main':
    print('这是测试')

通过__name__可以选择性执行测试代码


  • from...import从模块中导入一个指定的部分到当前命名空间中

  • as重命名导入的模块

  • 要想导入不同目录下的模块,一般需要修改system模块的sys.path变量

import sys
sys.path.insert(0,'/home/python/Desktop/bd/test')
print(sys.path)

import test
test.test()
  • 重新导入模块
    模块被导入后,import不能重新导入,重新导入需用reload(test)
  • 如果一个文件中有__all__变量,那么也就意味着这个变量中的元素,不会被from xxx import *时导入
  • 创建__init__.py文件,将同一个文件夹下有联系的模块组织在一起,成为包。
    __init__.py文件,可以定义__all__变量,控制from 包名 import ...导入的模块,也可以编写内容执行。
    包可以嵌套

  • 获取给程序传递的参数
import sys
print(sys.argv)

if sys.argv[1] != '':
    print('第一个参数为%s',sys.argv[1])

  • 列表推导式——轻量级循环列表,概念上类似于Java中的匿名对象

  • 使用集合set,可以快速的完成对list中的元素去重复的功能

你可能感兴趣的:(Python面向对象)