class Person: __v = None @classmethod def get_instance(cls): if cls.__v: return cls.__v else: cls.__v = Person() return cls.__v #不使用类()创建对象 obj = Person.get_instance() print(obj)
和 Java的好像有蛮多不同,让我感觉有点怪,可以确定的是上面的,不能实现单例模式,后面补上
补:
查了一下,发现好像不对,感觉有问题。找到的python2.*的单例不是这样的
python2.*类型改,但是会报错,这个错误我就不分析了,复杂
class Singleton(object): def __new__(cls,*args,**kwargs): if not hasattr(cls,'_inst'): cls._inst = super(Singleton,cls).__new__(cls,*args,**kwargs) ###### TypeError: object() takes no parameters return cls._inst if __name__ == '__main__': class A(Singleton): def __init__(self,s): self.s = s a = A('apple') b = A('banana') print(id(a), a.s) print(id(b), b.s)
可能用最上面的就好了,我找时间去看一下其他的教程是怎么样的。然后再补上
作业: 选课系统 (我后面补/捂脸)
角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级,班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供两个角色接口
6.1 学员视图,可以注册,交学费,选择班级,
6.2 讲师视图,讲师可管理自己的班级,上课时选择班级,查看班级学员列表,修改所管理的学员的成绩
6.3 管理视图,创建讲师,创建班级,创建课程
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
源文档 <http://www.cnblogs.com/alex3714/articles/5188179.html> 源文档有一些例子,可以看一下