class Foo(object):
	def __init__(self, name, age):
		self.name = name
		self.age = age
	def __getitem__(self, item):
		if hasattr(self, item):
			return self.__dict__[item]
	def __setitem__(self, key, value):
		self.__dict__[key] = value
	def __delitem__(self, key):
		del self.__dict__[key]
foo = Foo("adong", "28")
print foo["name"], foo["age"]
foo["height"] = "175"
print foo["height"]
del foo["height"]
print foo["height"]
>>>
adong 28
175
None
class F:
	def __init__(self, name):
		self.name = name
	def __new__(cls, *args, **kwargs):
		return object.__new__(cls)
f1 = F("adong")
f2 = F("aqiang")
print f1
print f2
>>>
<__main__.F instance at 0x0000000003A70E88>
<__main__.F instance at 0x0000000003A70E48>
# 实例化的结果是两个对象
class F:
	__instance = False
	def __init__(self, name):
		self.name = name
	def __new__(cls, *args, **kwargs):
		if cls.__instance:
			return cls.__instance
		else:
			cls.__instance = object.__new__(cls)
			return cls.__instance
f1 = F("adong")
f2 = F("aqiang")
print f1
print f2
>>>
<__main__.F instance at 0x0000000003A90E88>
<__main__.F instance at 0x0000000003A90EC8>
# 单例模式,但是地址不一样,不知道是哪里的问题
原文:https://www.cnblogs.com/chenadong/p/9595565.html