首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python中的user-input(input)向类添加新对象

使用python中的user-input(input)向类添加新对象
EN

Stack Overflow用户
提问于 2019-03-29 21:29:34
回答 3查看 1.6K关注 0票数 1

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

我已经尝试创建一个函数,该函数将用户输入的值传递给x= emner(x)来创建它,但它只返回: AttributeError:'str‘对象没有属性'fagKode’,所以我认为我的问题是输入值被创建为字符串,因此它不会被理解为创建函数的一种方式

代码语言:javascript
运行
复制
 emne=[]
 class Emne:

    def __init__(self,fagKode):
        self.fagKode = fagKode
        self.karakter = ""
        emne.append(self)


    def leggTilEmne():
        nyttEmne = input("test:")
        nyttEmne=Emne(nyttEmne)

预期的结果是代码创建了一个新的类实例。

EN

回答 3

Stack Overflow用户

发布于 2019-03-29 21:35:35

如果选择一个名称是指fagKode属性,那么您需要的是:

代码语言:javascript
运行
复制
fagKode = input('Enter code: ')
Emne(fagKode)

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

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

代码语言:javascript
运行
复制
 emne=[]
 class Emne:

    def __init__(self,fagKode):
        self.fagKode = fagKode
        self.karakter = ""        


    def leggTilEmne():
        nyttEmne = input("test:")
        enme.append(Emne(nyttEmne))
票数 0
EN

Stack Overflow用户

发布于 2019-03-29 21:40:04

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

代码语言:javascript
运行
复制
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) 
票数 0
EN

Stack Overflow用户

发布于 2019-03-29 22:01:33

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

代码语言:javascript
运行
复制
 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55418542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档