Python高级

Python高级

python面向对象

简介

  1. 类变量
  2. 数据成员(类变量或者实例变量)
  3. 方法重写
  4. 局部变量
  5. 实例变量
  6. 继承
  7. 实例化
  8. 方法
  9. 对象

创建类

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
  1. empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问
  2. init()类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
  3. self 代表类的实例,相当于java的this,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数

创建对象

"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)

访问属性

getattr(obj, name[, default]) : 访问对象的属性。
hasattr(obj,name) : 检查是否存在一个属性。
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
delattr(obj, name) : 删除属性

python的内置属性

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

python的对象销毁

  1. 引用计数法(跟踪和回收垃圾)
  • 注意:当对象被创建时,就创建了一个引用计数器,只有当该计数器为0时,该对象将被回收,but是等解释器在适当时机才将对象的内存空间回收,并不是立刻,这点跟java一样
  1. 循环垃圾收集器
  • 指的两个对象互相引用,这个时候仅用引用计数法来回收是不能处理的,所以得用循环垃圾收集器

类的继承

  1. 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类

  2. 继承语法

class 派生类名(基类名)
    ...
  • 可以多继承
class C(A, B):   # 继承类 A 和 B
  1. 子类识别检测
  • issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)
  • isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true

方法重写和重载

  1. 重写
  • 如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法
  1. 重载
序号方法描述简单调用
1init ( self [,args…] )构造函数obj = className(args)
2del( self )析构方法, 删除一个对象del obj
3repr( self )转化为供解释器读取的形式repr(obj)
4str( self )用于将值转化为适于人阅读的形式str(obj)
5cmp ( self, x )对象比较cmp(obj, x)

类的属性和方法

  1. 类的私有属性
  • __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
  1. 类的方法
  • 使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数
  1. 类的私有方法
  • __private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods
class JustCounter:
    __secretCount = 0  # 私有变量
    publicCount = 0    # 公开变量
 
    def count(self):
        self.__secretCount += 1
        self.publicCount += 1
        print self.__secretCount
 
counter = JustCounter()
counter.count()
counter.count()
print counter.publicCount
print counter.__secretCount  # 报错,实例不能访问私有变量
  1. 私有属性访问
  • Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName( 对象名._类名__私有属性名 )访问属性
  • 注意:.类名 是一根下划线
class Runoob:
    __site = "www.runoob.com"

runoob = Runoob()
print runoob._Runoob__site
  1. 单下划线、双下划线、头尾双下划线说明:
  • foo: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的
  • _foo: 以单下划线开头的表示的是protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

python正则表达式

re.match函数

  1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
函数语法:
re.match(pattern, string, flags=0)

pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,控制匹配方式,如:是否区分大小写,多行匹配等等。

re.search方法

  1. re.search 扫描整个字符串并返回第一个成功的匹配
函数语法:
re.search(pattern, string, flags=0)

正则实例

  1. 字符类
实例描述
[Pp]ython匹配 “Python” 或 “python”
rub[ye]匹配 “ruby” 或 “rube”
[aeiou]匹配中括号内的任意一个字母
[0-9匹配任何数字。类似于 [0123456789]
a-z]匹配任何小写字母
[A-Z]匹配任何大写字母
[a-zA-Z0-9]匹配任何字母及数字
[^aeiou]除了aeiou字母以外的所有字符
[^0-9]匹配除了数字外的字符
  1. 特殊字符类
实例描述
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。
  1. 其他特殊元素
实例描述
^匹配字符串的开头
$匹配字符串的末尾。
.匹配任意字符,除了换行符
[…]用来表示一组字符,单独列出:[amk] 匹配 ‘a’,‘m’或’k’
[^…]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re*匹配0个或多个的表达式。
re+匹配1个或多个的表达式。
re?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
re{ n}精确匹配 n 个前面表达式。例如, o{2} 不能匹配 “Bob” 中的 “o”,但是能匹配 “food” 中的两个 o。
re{ n,}匹配 n 个前面表达式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值