我正在尝试向一个类(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)
预期的结果是代码创建了一个新的类实例。
发布于 2019-03-29 21:35:35
如果选择一个名称是指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))
发布于 2019-03-29 21:40:04
我不确定你到底在问什么,因为你还没有回复评论。所以,
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)
发布于 2019-03-29 22:01:33
这是一个何时使用类方法的示例。但是,__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)
https://stackoverflow.com/questions/55418542
复制相似问题