当前位置: 首页 > 知识库问答 >
问题:

具有大量实例的Python类

酆华皓
2023-03-14

我需要定义一个类和大量实例(超过30个,但代码中给出了其中的3个),以便能够在python模块文件之间共享它们。我对以下代码有问题(简化):

class class1:
    def __init__(self, var1):
        self.var1 = var1

    def read_file():
        try:
            f = open('/file1.txt')
            read_text = f.readlines()
            abc1 = class1((read_text[0]))
            abc2 = class1((read_text[1]))
            abc3 = class1((read_text[2]))
    
        except:
            abc1 = class1("text_1")
            abc2 = class1("text_2")
            abc3 = class1("text_3")


class1.read_file()

def1 = class1("abc")
def2 = class1("def")
def3 = class1("hjk")

print(def1.var1)
print(abc1.var1)
print(abc2.var1)

它给出了错误:

NameError: name 'abc1' is not defined

我试图在类中定义实例,以避免为它们定义实例并使代码变长。

通过一个类定义30多个实例的pythonic方法是什么?定义类中的实例的解决方案是什么?

file1.txt的内容:

a
b
c
d
e

共有1个答案

丁韬
2023-03-14

这是否有帮助:

class MyClass:

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


with open('/file1.txt') as f:
    objects = [MyClass(line) for line in f]

print(objects[0].var)
print(objects[1].var)

(让我们给类取PEP8的名字)要定义“以pythonic方式定义许多实例”,您可能希望使用列表理解。

 类似资料:
  • 问题内容: 这是我写的三个类: Tester类的main方法的输出为: 为什么sx返回0而不是1?由于不是Rectangle变量的当前实例,并且该类也声明了相同的实例变量,或者Rectangle类中的变量没有像对getX()一样覆盖Shape类中的先前公共x变量。矩形类中的方法因此返回1? 同样作为一般规则,超类仅在其子类中也声明了其子类方法时才可以访问其子类的实现?这是因为编译器会看到“ Sha

  • 问题内容: 我目前正在研究如何在ehcache中使用RMI分发选项。我已经正确配置了ehcache.xml,复制似乎可以正常工作。但是我有两个问题: ->似乎ehcache /hibernate为每个实体创建1个缓存。很好,但是当复制到位时,它会创建1个线程/缓存进行复制。这是预期的行为吗?由于我们的域很大,因此它创建了大约300个线程,在我看来,这确实很大 ->另一个令人讨厌的结果是,心跳消息似

  • 问题内容: 我有Python类,在运行时我只需要一个实例,因此每个类只具有一个属性就足够了,而每个实例只具有一次属性就足够了。如果将有多个实例(不会发生),则所有实例应具有相同的配置。我想知道以下哪种选择更好或更“惯用”的Python。 类变量: 实例变量: 问题答案: 我有Python类,在运行时我只需要一个实例,因此每个类只具有一个属性就足够了,而每个实例只具有一次属性就足够了。如果将有多个实

  • 问题内容: 我在下面的示例中进行了尝试,并需要进行澄清。在这两种情况下,我都可以在测试函数中访问类变量和实例。 因此,假设是否必须定义一个需要在所有函数中使用的文字,这将是定义..self变量或class变量的更好方法? code.py 问题答案: 类变量对于所有实例使用的“常量”非常有用(从技术上讲,所有方法都是如此)。您可以使用模块全局变量,但是使用类变量会使它与类更明确地关联。 您实际上也经

  • 问题内容: 我有一个无状态会话bean,其中包含一个公共方法,几个私有方法和一些实例级变量。下面是一个伪代码示例。 我看到的是methodB正在打印未传递给MethodA的值。最好的说来,它是从同一bean的其他实例打印值。是什么原因造成的? 我应该指出代码在99.9%的时间内都能正常工作。但是,.01%对我造成了一些严重的问题/担忧。 我知道,如果我使用不同的公共方法,则两次调用之间可能无法获得

  • 我有一个关于随机森林的问题。想象一下,我有用户与项目交互的数据。项目数量很大,大约10 000个。我的随机森林输出应该是用户可能与之交互的项目(如推荐系统)。对于任何用户,我想使用一个描述用户过去交互过的项目的功能。然而,将分类产品功能映射为一次热编码似乎非常缺乏内存效率,因为用户最多只能与几百个项目进行交互,有时甚至只有5个。 当其中一个输入特征是一个有大约10 000个可能值的分类变量,而输出