一、python类的构造方法怎样解决重载问题
首先,强调一下,python的类的构造方法,不能重载,不能重载,不能重载。
首先,强调一下,python的类的构造方法,不能重载,不能重载,不能重载。
首先,强调一下,python的类的构造方法,不能重载,不能重载,不能重载。
既然不能重载,那咋办?对于java与c++用惯了的人,这很为难。不过,python不能重载构造函数,那么我们就想办法让python的构造函数达到重载的目的就是了。重载的目的就是,一个名字多个用法而已。
我们可以利用传递方法参数默认值和多选来解决问题,例如:
class Demo:
def __init__(self, name = None):
if name is None:
print("Name is null!")
return
elif name:
self.name = name
print(str(name))
return
else:
print("空类!")
return
return
def toGo(self):
print("name")
return
test1 = Demo('这是一个Demo')
test2 = Demo()
问题被解决了, 与你重载构造函数没多大区别,而且还写代码写得少。
二、如何将自定义类写入json中
首先,强调一下,python不能将自定义类写入json中。
首先,强调一下,python不能将自定义类写入json中。
首先,强调一下,python不能将自定义类写入json中。
既然无法写入,那么就用另外一个办法解决,例如我们可以用Python的字典去解决这个问题。json允许写入字典并转换为Object(json的对象);也允许读取json文件中的对象,将其转换为python字典。
具体操作看python代码:
import json
class User:
def __init__(self,dictionary = None):
if dictionary is None:
self.name = input("请输入您的姓名:")
self.password = input("请输入您的密码:")
self.phoneNumber = input("请输入您的电话:")
return
elif type(dictionary) is dict:
self.name = dictionary['name']
self.password = dictionary['password']
self.phoneNumber = dictionary['phoneNumber']
else:
print('your input exists error!')
return
def toDict(self):
value = dict()
value['name'] = str(self.name)
value['password'] = str(self.password)
value['phoneNumber'] = str(self.phoneNumber)
return value
path = r'D:\Desktop\pythonJson.txt'
file = open(path,'w')
user = User()
json.dump(user.toDict(),file)
file.close()
file = open(path)
p = json.load(file)
print(p)
user = User(p)
print(user)
file.close()