单例方式
通过类的绑定方法
class Person(): _instance=None def __init__(self,port,host): self.port=port self.host=host @classmethod def get_sigoleton(cls): import settings if not cls._instance: cls._instance = cls(settings.PORT, settings.HOST) return cls._instance s1=Person.get_sigoleton() s2=Person.get_sigoleton() s3=Person.get_sigoleton() print(s1) print(s2) s4=Person('33306','192.168.1.1') print(s4)
通过装饰器
def get_sigoleton(cls): import settings instance=cls(settings.PORT,settings.HOST) def wrapper(*args,**kwargs): if len(args)!=0 or len(kwargs)!=0 res=cls(*args,**kwargs) return res else: return instance return wrapper @get_sigoleton class Person(): def __init__(self,port,host): self.port=port self.host=host # Person=get_sigoleton(Person) s1=Person() s2=Person() s3=Person('33306','192.168.1') print(s1) print(s2) print(s3)
通过元类
class Mymeta(type): def __init__(self,name,bases,dic): import settings self._instance=self(settings.PORT,settings.HOST) def __call__(self, *args, **kwargs): if len(args)!=0 or len(kwargs)!=0: obj=object.__new__(self) obj.__init__(*args,**kwargs) return obj else: return self._instance class Person(metaclass=Mymeta): def __init__(self,port,host): self.port=port self.host=host s1=Person() s2=Person() s3=Person('33306','192.168.1') print(s1) print(s2) print(s3)
通过模块:
def test(): pass def test2(): pass test() test2() from sigonleton import s1 from sigonleton import Person s2=Person('33306','192.168.1') print(s1) print(s2) import settings class Person(): def __init__(self,port,host): self.port=port self.host=host s1=Person(settings.PORT,settings.HOST)
sort 与 sorted 区别:
- sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
- ist 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
- sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)