首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试检查对象是否有列表,如果没有,则进行断言

尝试检查对象是否有列表,如果没有,则进行断言
EN

Stack Overflow用户
提问于 2015-08-26 16:09:11
回答 2查看 211关注 0票数 0

问:我正在尝试调试class中的一个函数,以确保列表已经实现,如果不是,我希望出现一个错误。我对编程很陌生,并试图了解如何为上述调试目的有效地添加assert

class BaseAPI()的方法体中,我必须遍历列表,并对ConvenienceAPI(BaseAPI)中的每个项调用retrieve_category,在super()上传递新的列表。我认为我做错了什么,因为我得到了错误:TypeError: create_assessment() got an unexpected keyword argument 'category'

问题2我还希望category有一个包含多个类别(字符串)的列表。这不是现在发生的。方法中的列表不被迭代或创建。我不确定..。请参见下面的跟踪错误。

代码

实例化categories列表

代码语言:javascript
复制
api = BaseAPI()
api.create_assessment('Situation Awareness', 'Developing better skills', 'baseball', 'this is a video','selecting and communicating options', category=['Leadership', 'Decision-Making', 'Situation Awareness', 'Teamwork and Communication'])

BaseAPI()方法,其中assertcreate存在

代码语言:javascript
复制
class BaseAPI(object):

    def create_assessment(self, name, text, user, video, element, category):     
        category = [] # Trying to check if category isn't a list
        assert category, 'Category is not a list'
        new_assessment = Assessment(name, text, user, video, element, category)
        self.session.add(new_assessment)
        self.session.commit()

新添加的迭代列表,但仍然提供Error

代码语言:javascript
复制
class ConvenienceAPI(BaseAPI):          
    def create_assessment(self, name, text, username, videoname, element_text, category_name):
        user = self.retrieve_user(username)
        video = self.retrieve_video(videoname) 
        element = self.retrieve_element(element_text)
        categories = self.retrieve_category(category_name)
            for items in categories: # < ==== added 
            return categories # < ==== added 
        return super(ConvenienceAPI, self).create_assessment(name, text, user, video, element, categories)    

表格

代码语言:javascript
复制
class Assessment(Base):
    __tablename__ = 'assessments'
    #some code

    category_id = Column(Integer, ForeignKey('categories.category_id'))  
    category = relationship('AssessmentCategoryLink', backref='assessments')


    def __init__(self, name, text, user, video, element, category): # OBJECTS !!
        #some code
        self.category = []

TracebackError

代码语言:javascript
复制
ERROR: db.test.test.test1
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/ack/code/venv/NotssDB/notssdb/test/test.py", line 69, in test1
    api.create_assessment('Situation Awareness', 'Developing better skills', 'baseball', 'this is a video','selecting and communicating options', category=['Leadership', 'Decision-Making', 'Situation Awareness', 'Teamwork and Communication'])
TypeError: create_assessment() got an unexpected keyword argument 'category'
EN

回答 2

Stack Overflow用户

发布于 2015-08-26 16:14:45

您的断言声明应该是:

代码语言:javascript
复制
assert isinstance(category, list)

也移除类别= []行。

票数 0
EN

Stack Overflow用户

发布于 2015-08-26 16:33:12

您将类别作为kwarg传递,但是方法签名将其作为位置arg。尝试将方法签名更改为

代码语言:javascript
复制
class BaseAPI(object):
    def create_assessment(self, name, text, user, video, element, category=[]): 

或者用位置arg来称呼它

代码语言:javascript
复制
return super(ConvenienceAPI, self).create_assessment(
    name, text, user, video, element, category=category
) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32231589

复制
相关文章

相似问题

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