Lzp729@Blog
道法自然
Browse: Home / 知识整理

知识整理

Python知识整理 (25) 异常

By lzp729 on December 24, 2010

Python的异常语句形式

try: #进入异常管理的范围
<statement>
except <excp1>: #捕获异常1
<statement>
except <excp2>: #捕获异常2
<statement>
except: #捕获所有异常
<statement>
else: [...]

Posted in Python知识整理 | Tagged Python, 异常, 知识整理 | Leave a response

Python知识整理 (24) 类的高级主题

By lzp729 on December 23, 2010

可以继承内置类型, class MyList(list)
变量名压缩(类似C++的name mangling)只发生在class语句内, 只针对开头有两个下划线的变量, 包括属性和方法都适用, 例如, Spam类的属性__X, 会压缩为_Spam__X, 依次来形成伪私有属性
继承树的搜索只发生在使用时候, 如a = obj.member, 而不发生在赋值时, 如obj.member = a
新式类就是继承于内置类object的子类. 新式类在处理多重继承构成的菱形继承树是采用广度遍历搜索的方式, 而老式类采用深度遍历搜索. 新式类的__slots__属性能限定类对象的访问接口, 如__slots__ = ['a','b'], 那么obj.c = 5将报错. 新式类的__getattribute__方法会拦截所有属性访问, 而普通的__getattr__只拦截未定义属性的访问.
静态方法和类方法, 通过staticmethod函数和classmethod函数实现, 例如在普通类中的函数foo, 通过foo = staticmethod(foo), 将foo转换为一个静态方法, 静态方法和类方法的区别在于, 类方法会有额外的cls参数传入, 用于指明调用者的信息, 实现类似self参数的动态行为, 而静态方法仅仅是将函数定义在类中, 多了一层名字空间而已
函数装饰器, 即在定义函数前加上@装饰器名字, 例如可以类中的foo函数定义的上一行加上@staticmethod将foo定义为静态方式, 实际上任何函数均可, 而装饰器实际上就是函数调用, 如定义@a @b @ c def f(), 那么调用f时, 就是调用a(b(c(f())))

Posted in Python知识整理 | Tagged Python, 伪私有, 新式类, 知识整理, 类方法, 装饰器, 静态方法 | Leave a response

Python知识整理 (23) 类代码编写细节-2

By lzp729 on November 30, 2010

__getattr__方法是拦截属性点号运算, 更确切的说, 当通过为定义属性名称且无法通过类继承树找到该名称时, 就会用属性名称来调用这个方法

class empty:
def __getattr__(self, attrname):
if attrname == ‘age’:
return 40
else:
raise [...]

Posted in Python知识整理 | Tagged Python, 函数对象, 拦截, 知识整理 | Leave a response

Python知识整理 (22) 类代码编写细节-1

By lzp729 on November 29, 2010

class内包含类属性, 特殊名称方法重载运算符, __init__的构造函数. class内赋值变量名会创建类属性, 而内嵌的def则会创建类方法.位于class定义内的代码, 在class运行时, 会执行.

class MixedNames:
data = ‘spam’
def __init__(self, value):
self.data = value
def display(self):
print self.data, MixedNames.data # MixedNames.data类似于C++中的静态数据成员, 只是对于Python, 此data定义于类MixedNames中.
 
>>> x = MixedNames(1)
>>> y = MixedNames(2)
>>> x.display(); y.display()
 
输出:
1 spam
2 spam

class中定义的方法第一个参数总是接受方法调用的隐性主体, 也就是对象, Python会自动把实例方法的调用对应到类方法函数.

x.display()
#等价于
Mixednames.display(x)

调用超类的构造函数

class Super:
def __init__(self, x):
……
 
class Sub(Super):
def __init__(self,x,y):
Super.__init__(self, x)
<li>类接口技术</li>
<pre lang=’python’>
class Super:
def method(self):
print ‘in Super.method’
del delegate(self):
self.action()
 
class Inheritance(Super): # 继承
pass
 
class Replacer(Super): # 重定义
def mdethod(self):
print ‘in Replacer.method’
 
class Extender(Super): [...]

Posted in Python知识整理 | Tagged Python, 构造函数, 知识整理, 运算符重载, 迭代器 | Leave a response

Python知识整理 (21) 类代码编写基础

By lzp729 on November 28, 2010

代码1: 类外或者对象外增加属性成员

class baseClass:
def __init__(self, value):
self.a = value
 
a = baseClass("2")
 
baseClass.bAtt = "1"
b = baseClass("3")
print baseClass.bAtt # 输出1
print baseClass.a # 编译错误
print a.bAtt [...]

Posted in Python知识整理 | Tagged Python, 属性, 知识整理, 类 | Leave a response

Next »

知识整理

  • Python知识整理 (25) 异常
  • Python知识整理 (24) 类的高级主题
  • Python知识整理 (23) 类代码编写细节-2
  • Python知识整理 (22) 类代码编写细节-1
  • Python知识整理 (21) 类代码编写基础
  • Python知识整理 (20) OOP: 宏伟蓝图
  • Python知识整理 (19) 高级模块话题
  • Python知识整理 (18) 模块包
  • Python知识整理 (17) 模块代码编写基础
  • Python知识整理 (16) 模块
  • Python知识整理 (15) 函数的高级话题
  • Python知识整理 (14) 作用域和参数
  • Python知识整理 (13) 函数基础
  • Python知识整理 (12) while和for循环
  • Python知识整理 (11) if测试
  • Python知识整理 (10) 赋值, 表达式和打印
  • Python知识整理 (9) Python语句
  • Python知识整理 (8) 元组 文件和其他
  • Python知识整理 (7) 列表与字典
  • Python知识整理 (6) 字符串
  • Python知识整理 (5) 动态类型
  • Python知识整理 (4) 数字
  • Python知识整理 (3) 如何运行程序
  • Python知识整理 (2) 关于Python的执行方式
  • Python知识整理 (1) 介绍
  • C++ 知识整理 (17) 数据语意学 Sematics of Data
  • C++知识整理 (16) 构造函数语意学 Sematics of Constructor
  • C++知识整理 (15) C++对象布局
  • PHP知识整理 (9) PHP访问数据库
  • PHP知识整理 (8) 错误和异常处理
  • PHP知识整理 (7) 面向对象的PHP
  • PHP知识整理 (6) 代码重用与函数编写
  • PHP知识整理 (5) Perl正则表达式
  • PHP知识整理 (5) POSIX正则表达式
  • PHP知识整理 (4) 字符串操作
  • PHP知识整理 (3) 使用数组
  • PHP知识整理 (2) 数据的存储和检索
  • PHP知识整理 (1) 基础
  • C++知识整理 (14) 特殊工具与技术
  • C++知识整理 (13) 用于大型程序的工具
  • C++知识整理 (12) 模板与泛型编程
  • C++知识整理 (11) 面向对象编程与泛型编程
  • C++知识整理 (10) 重载操作符与转换
  • C++知识整理 (9) 复制控制
  • C++知识整理 (8) 类
  • C++知识整理 (7) 函数
  • C++知识整理 (6) 语句
  • C++知识整理 (5) 表达式
  • C++知识整理 (4) 数组和指针
  • C++知识整理 (3) 标准库
  • C++知识整理 (2) 变量和基本类型
  • C++知识整理 (1) 准备知识

Copyright © 2012 Lzp729@Blog.

Powered by WordPress and Hybrid, Theme By Lzp729.

RSS feed Site Map