【问题标题】:How i can use a dictionary as a parameter of a class and use it?我如何使用字典作为类的参数并使用它?
【发布时间】:2019-12-16 07:02:25
【问题描述】:

我想要一个字典作为类中的参数调用,并希望将它与类中的函数一起使用。

class video_0(data):

def check_internal(self):
    if 'internal' in self.data['video_0']:
        return True
    else:
        return False

def check_sdcard(self):
    if 'sdcard' in self.data['video_0']:
        return True
    else:
        return False

这里的数据是字典。我试图做这样的事情。

data = {
"video_3": {
    "internal": {
        "del_status": 1,
        "del_start": 1574164254340.0,
        "del_end": 1574164254345.0,
        "copy_start": 1574162274613.0,
        "copy_end": 1574162274624.0,
        "copied": 1,
        "fail_reason": ""
    },
    "sdcard": {
        "del_status": 1,
        "del_start": 1574829181577.0,
        "del_end": 1574829181577.0,
        "copy_start": 1574162275033.0,
        "copy_end": 1574162275130.0,
        "add_status": 1
    },
    "starttime": 1574162215744.0,
    "duration": 57891,
    "endtime": 1574162273635.0,
    "size": 3754770
},

这是我想在类中使用的输入字典。

【问题讨论】:

  • 您遇到的错误是什么?

标签: python function class dictionary


【解决方案1】:

我相信您想将字典初始化为 init(实例变量)的参数,如下所示。

class video_0:

    def __init__(self, data):
        self.data = data

其余使用方法与您的方法相同

【讨论】:

    【解决方案2】:

    可以通过构造函数传递数据

    class video_0():
        def __init__(self, data):
            self.data = data
    
        def getData(self):
            return self.data
    
    
    new_dic = {'Name': 'John'}     
    vid = video_0(new_dic)
    
    print(vid.getData())
    

    【讨论】:

      【解决方案3】:

      我想你想要的是__init__ 方法。使用__init__ 方法将参数传递给类对象。 Python 中的class ChildClass(ParentClass) 表示ChildClass 正在扩展ParentClass

      class video_0:
          def __init__(self, data):
              self.data = data
      
          def check_internal(self):
              if 'internal' in self.data['video_0']:
                  return True
              else:
                  return False
      
          def check_sdcard(self):
              if 'sdcard' in self.data['video_0']:
                  return True
              else:
                  return False
      
          def check_internal_copied(self):
              if 'copied' in self.data['video_0']['internal']:
                  return True
              else:
                  return False
      
          def check_internal_del_status(self):
              if 'del_status' in self.data['video_0']['internal']:
                  return True
              else:
                  return False
      
      c = video_0(data)
      c.check_internal_copied()
      

      【讨论】:

      • 谢谢,但是如果我在类中使用'self.data',它会改变字典的地址并给出关键错误。
      • 您可以将输入数据粘贴到您的问题中吗?
      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 2018-08-10
      • 2013-12-07
      • 2022-11-25
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多