为了账号安全,请及时绑定邮箱和手机立即绑定

在python中使用用户输入(输入)向类添加新对象

在python中使用用户输入(输入)向类添加新对象

弑天下 2021-12-21 17:39:06
我正在尝试向类(emne)添加新对象,但需要使用用户输入创建类的新实例。所以我需要一种方法来选择对象的名称并使用用户输入设置对象的一些值。我已经尝试创建一个函数,将用户输入的值传递给 ax = emner(x) 来创建它,但它只返回: AttributeError: 'str' object has no attribute 'fagKode' 所以我认为我的问题是输入的值被创建为字符串,因此它不被理解为创建函数的一种方式 emne=[] class Emne:    def __init__(self,fagKode):        self.fagKode = fagKode        self.karakter = ""        emne.append(self)    def leggTilEmne():        nyttEmne = input("test:")        nyttEmne=Emne(nyttEmne)预期结果是代码创建了类的新实例。
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

这是何时使用类方法的示例。__init__但是,不应附加到全局变量。要么 1)将类方法附加到类属性,要么 2)让它返回对象并让调用者维护一个全局列表。


 emne = []


 class Emne:

    emne = []


    def __init__(self, fag_kode):

        self.fag_kode = fag_kode

        self.karakter = ""


    @classmethod

    def legg_til_emne_1(cls):

        nytt_emne = input("test:")

        cls.emne.append(cls(nytt_emne))


    @classmethod

    def legg_til_emne_2(cls):

        nyttEmne = input("test:")

        return cls(nyttEmne)



Emne.legg_til_emne_1()  # Add to Emne.emne


e = Emne.legg_til_emne_2()

emne.append(e)


查看完整回答
反对 回复 2021-12-21
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

我不确定你到底在问什么,因为你还没有回复评论。所以,


emne=[]

class Emne:


   def __init__(self,fagKode):

       self.fagKode = fagKode

       self.karakter = ""

       emne.append(self)



   def leggTilEmne(self, value): # <--- is this what you want

       self.nyttEmne= Emne(value) 


查看完整回答
反对 回复 2021-12-21
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果通过选择名称来表示您的fagKode属性,那么您需要的是:


fagKode = input('Enter code: ')

Emne(fagKode)

您将 Enme 的实例添加到构造函数的列表中,因此您无需将它们保存到变量中。


或者,您可以在函数中处理:


 emne=[]

 class Emne:


    def __init__(self,fagKode):

        self.fagKode = fagKode

        self.karakter = ""        



    def leggTilEmne():

        nyttEmne = input("test:")

        enme.append(Emne(nyttEmne))


查看完整回答
反对 回复 2021-12-21
  • 3 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信