如何在Python中访问和打印整个类变量?

如何在Python中访问和打印整个类变量?,python,csv,class,Python,Csv,Class,我只是在学习python中的类,理解它们有点困难。我有一段代码,可以将CSV文件读入类中。文件中的一些类名的一个例子是年龄、教育程度、性别、工资等。我希望能够访问和打印年龄变量中的所有内容。我知道我可以使用print(instances[1].Age)打印特定元素,但列表中有许多元素,我希望能够访问所有元素。我认为for循环可以工作,但我不确定如何编写它 class File: def __init__(self, row, header): self.__dict__

我只是在学习python中的类,理解它们有点困难。我有一段代码,可以将CSV文件读入类中。文件中的一些类名的一个例子是年龄、教育程度、性别、工资等。我希望能够访问和打印年龄变量中的所有内容。我知道我可以使用
print(instances[1].Age)
打印特定元素,但列表中有许多元素,我希望能够访问所有元素。我认为for循环可以工作,但我不确定如何编写它

 class File:
    def __init__(self, row, header):
        self.__dict__ = dict(zip(header, row))
data = list(csv.reader(open('data_file.csv')))
instances = [File(i, data[0]) for i in data[1:]]
这就是我必须将CSV文件读入类中的内容,从这里我无法访问变量。

dir()
将列出模块的所有内容

class B:
    x = 5
    def __init__(self):
        print("hello")
        
    def method(self):
        print("world")
        
        
b  = B();
print(dir(B))

objectMethods =  [] #stores methods
objectMemberVars = [] #stores member variables as tuples (name,value)
for attr in dir(b):
    if callable(getattr(b,attr)):
        objectMethods.append(getattr(b,attr)) 
    else:
        objectMemberVars.append((attr,getattr(b,attr)))
        
print(objectMethods)
print(objectMemberVars)
print(objectMethods[1])
输出:

hello
['__doc__', '__init__', '__module__', 'method', 'x']
[<bound method B.__init__ of <__main__.B instance at 0x7fc3afa41320>>, <bound method B.method of <__main__.B instance at 0x7fc3afa41320>>]
[('__doc__', None), ('__module__', '__main__'), ('x', 5)]
<bound method B.method of <__main__.B instance at 0x7fc3afa41320>>
你好 [''文档'''.'初始化'.'','.'模块'.'','方法'.'',x'] [, ] [(“文件”,无),(“模块”,“主模块”,“x”,5)] 可以对类定义和实例执行此操作。不同之处在于类定义的方法表示为
unbound
,而实例的方法表示为
bound

我引用了这篇文章:
dir()
将列出
模块的所有内容

class B:
    x = 5
    def __init__(self):
        print("hello")
        
    def method(self):
        print("world")
        
        
b  = B();
print(dir(B))

objectMethods =  [] #stores methods
objectMemberVars = [] #stores member variables as tuples (name,value)
for attr in dir(b):
    if callable(getattr(b,attr)):
        objectMethods.append(getattr(b,attr)) 
    else:
        objectMemberVars.append((attr,getattr(b,attr)))
        
print(objectMethods)
print(objectMemberVars)
print(objectMethods[1])
输出:

hello
['__doc__', '__init__', '__module__', 'method', 'x']
[<bound method B.__init__ of <__main__.B instance at 0x7fc3afa41320>>, <bound method B.method of <__main__.B instance at 0x7fc3afa41320>>]
[('__doc__', None), ('__module__', '__main__'), ('x', 5)]
<bound method B.method of <__main__.B instance at 0x7fc3afa41320>>
你好 [''文档'''.'初始化'.'','.'模块'.'','方法'.'',x'] [, ] [(“文件”,无),(“模块”,“主模块”,“x”,5)]
可以对类定义和实例执行此操作。不同之处在于类定义的方法表示为
unbound
,而实例的方法表示为
bound

我引用了这篇文章:

我是根据下面的csv文件示例来回答这个问题的

标题、姓名、日期、年龄、反馈

伟大的客户服务,John,2017-12-21,25,这里的客户服务是 很好。他们帮我找到了一辆2017年的凯美瑞,车况良好 价格合理。与其他经销商相比,他们提供的价格最低 价格。绝对推荐

因为您不必使用类,所以使用列表来完成工作要容易得多

import csv


with open('C:/Users/user/Desktop/folder/log.csv') as f:

    data = []
    reader = csv.DictReader(f)
    for rows in reader:
      data.append(rows)
    for row in data:
        print(row['age'])
输出


25

我是根据下面的csv文件示例来回答这个问题的

标题、姓名、日期、年龄、反馈

伟大的客户服务,John,2017-12-21,25,这里的客户服务是 很好。他们帮我找到了一辆2017年的凯美瑞,车况良好 价格合理。与其他经销商相比,他们提供的价格最低 价格。绝对推荐

因为您不必使用类,所以使用列表来完成工作要容易得多

import csv


with open('C:/Users/user/Desktop/folder/log.csv') as f:

    data = []
    reader = csv.DictReader(f)
    for rows in reader:
      data.append(rows)
    for row in data:
        print(row['age'])
输出

25

您是否被要求在本次挑战中使用课堂?因为它将更容易与开放和for循环一起使用。我可以与开放一起使用,但有人说使用类是首选。我已经成功地使用了with open方法,但我仍然对其他方法持开放态度。你被要求在这次挑战中使用课堂吗?因为它将更容易与开放和for循环一起使用。我可以与开放一起使用,但有人说使用类是首选。我已经设法使用with open方法使其工作,但我仍然对其他方法的想法持开放态度。