使用python

时间:2019-03-29 13:29:34

标签: python class user-input

我正在尝试将新对象添加到类(emne),但是需要使用用户输入来创建类的新实例。因此,我需要一种能够为对象选择名称并通过用户输入来设置对象的某些值的方法。

我已经尝试创建一个函数,该函数将用户输入的值传递给x = emner(x)来创建它,但是它只会返回: AttributeError:“ str”对象没有属性“ 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 个答案:

答案 0 :(得分:0)

如果通过选择名称来表示您的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))

答案 1 :(得分:0)

我不确定您要问什么,因为您尚未回复评论。所以,

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) 

答案 2 :(得分:0)

这是何时使用类方法的示例。不过,__init__不应附加到全局变量。 1)将class方法附加到class属性上,或者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)