黑马程序员技术交流社区
标题:
【上海校区】单例模式init问题及解决
[打印本页]
作者:
梦缠绕的时候
时间:
2019-1-9 10:04
标题:
【上海校区】单例模式init问题及解决
问题
class Dog(object):
__instane = None
def __new__(cls, *args, **kwargs):
if cls.__instane == None:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name):
self.name = name
dog1 = Dog("旺财") # 创建了dog对象,并调用__init__方法,初始化 旺财
print(dog1.name)
dog2 = Dog("哮天犬") # 使用dog对象,并调用__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已经被重新初始化为哮天犬
"""
创建对象一次,但是初始化了两次,也就是__init__方法执行力两次
dog
旺财
哮天犬
哮天犬
"""
class Dog(object):
__instane = None
def __new__(cls, *args, **kwargs):
if cls.__instane == None:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name):
self.name = name
dog1 = Dog("旺财") # 创建了dog对象,并调用__init__方法,初始化 旺财
print(dog1.name)
dog2 = Dog("哮天犬") # 使用dog对象,并调用__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已经被重新初始化为哮天犬
"""
创建对象一次,但是初始化了两次,也就是__init__方法执行力两次
dog
旺财
哮天犬
哮天犬
"""
解决
class Dog(object):
__instane = None
__init__flag = False
def __new__(cls, *args, **kwargs):
if cls.__instane == None:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name): # 加个类属性,就很容易解决啦
if self.__init__flag == False:
self.__init__flag = True
self.name = name
dog1 = Dog("旺财") # 创建了dog对象,并调用__init__方法,初始化 旺财
print(dog1.name)
dog2 = Dog("哮天犬") # 使用dog对象,并调用__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已经被重新初始化为哮天犬
"""
旺财
旺财
旺财
"""
class Dog(object):
__instane = None
__init__flag = False
def __new__(cls, *args, **kwargs):
if cls.__instane == None:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name): # 加个类属性,就很容易解决啦
if self.__init__flag == False:
self.__init__flag = True
self.name = name
dog1 = Dog("旺财") # 创建了dog对象,并调用__init__方法,初始化 旺财
print(dog1.name)
dog2 = Dog("哮天犬") # 使用dog对象,并调用__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已经被重新初始化为哮天犬
"""
旺财
旺财
旺财
"""
作者:
不二晨
时间:
2019-1-10 10:35
奈斯,加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2