简体   繁体   中英

How to create a list of instances of a given class

I'm facing problem with my code. In fact, I need to create a list of instances of my class( Patent). The name of the list is patent_ints. But when I'm trying to verify if any element in that list is a Patent one, I'm always getting a False response. And when iterating the first element is like "<__main__.Patent at 0x7f107820b710>" . Here is my code, I need help !

import json
import datetime

patent_data = json.loads(open('NASA_data.json', "r").read())
unique_center = []
for thing in patent_data["Patent_Information"]["Results"]:
    for val in thing:
        if(val == 'NASA Center'):
            unique_center.append(thing[val])

total_num_centers = len(set(unique_center))
class Patent:
    def __init__(self, abbreviated_organization_name, dict_data):
        self.org_name = abbreviated_organization_name
        self.title = dict_data["Title"]
        # initialize instance variable called year. The value can be extracted from dict_data. 
        # This should be a four digit string.
        self.year = str(datetime.datetime.strptime(dict_data['Date'], '%m/%d/%Y').year) #dict_data['Date'].split('/')[2]
        # initialize an instance variable called month. The value can be extracted from dict_data.
        # This should be a two digit string.
        self.month = str(datetime.datetime.strptime(dict_data['Date'], '%m/%d/%Y').month) #dict_data['Date'].split('/')[0]
        # initialize an instance variable called day. The value can be extracted from dict_data.
        # This should be a two digit string.
        self.day = str(datetime.datetime.strptime(dict_data['Date'], '%m/%d/%Y').day) #dict_data['Date'].split('/')[1]
        self.id = dict_data['Case Number']
        self.access_limit = dict_data['SRA Final']


patent_ints = [Patent(i, data) for i in unique_center for data in patent_data["Patent_Information"]["Results"]]
patent_ints[0]

Thank you in advance!

<__main__.Patent at 0x7f107820b710> is the default representation of the class when you try to print it. Add an __str__ or __repr__ method to the class and define some custom logic to return your desired details as a string:

class Patent:
    def __init__(self, abbreviated_organization_name, dict_data):
        ...

    def __repr__(self):
        # return a dictionary of items in the class but you can return whatever you want
        # you could do f'{self.title} {self.id} {self.year}-{self.month}-{self.day}' but str(self.__dict__) is quick to test
        return str(self.__dict__)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM