如何解决python自定义类的构造方法无法重载问题,并写入json中读取/输入

一、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()


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值