有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的某个字段赋值,而方法名或是字段名在编码代码时并不能确定,需要通过参数传递字符串的形式输入。举个具体的例子:当我们需要实现一个通用的DBM框架时,可能需要对数据对象的字段赋值,但我们无法预知用到这个框架的数据对象都有些什么字段,换言之,我们在写框架的时候需要通过某种机制访问未知的属性。

  这个机制被称为反射(反过来让对象告诉我们他是什么),或是自省(让对象自己告诉我们他是什么),用于实现在运行时获取未知对象的信息。

一. 代码示例

a.py
1
2
def a(a):
return [1,2,3,4]
b.py
1
2
def b():
return 1
rest.py
1
2
from a import *
from b import *
阅读全文 »

用来记录一些经常使用的 python 实现方法

优先队列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import heapq

class PriorityQueue(object):
def __init__(self):
self._queue = []
self._index = 0

def push(self, item, priority):
heapq.heappush(self._queue, (-priority, self._index, item))
self._index += 1

def pop(self):
return heapq.heappop(self._queue)[-1]

class Item(object):
def __init__(self, name):
self.name = name

def __repr__(self):
return 'Item(!r)'.format(self.name)
阅读全文 »

现在越来越多的博客采用静态页面的形式, 这样做的好处有很多, 一来由于是静态页面, 安全问题不用考虑, 二是我们可以用自己喜欢的编辑器在本机上用markdown编写博客, 本地留存md文件。

缺点是博客图片管理不是很方便, 于是就有了下文。

首先将需要上传的图片统一放在一个文件夹中, 博客标题名字可以当做文件夹名。

阅读全文 »
0%