問題關於 NameError: name 'self' is not defined

下面这段程式用于代码测试,预期是用通过测试
可是执行后出现NameError: name ‘self’ is not defined
在网上多次查询无果,
请教一下我应该修改哪一部分呢?
十分感谢

import unittest
from name_function import get_formatted_name

class NamesTestCase(unittest.TestCase):
    """测试name_function.py"""

    def test_first_last_name(self):
        """能够正确地处理像Janis Joplin这样的姓名吗?"""
    formatted_name=get_formatted_name('janis','joplin')
    self.assertEqual(formatted_name,'Janis Joplin')

if __name__=="__main__":
    unittest.main()
def get_formatted_name(first,last):
    """Generate a nearly formatted full name"""
    full_name = first +' '+last
    return full_name.title()

問題關於 NameError: name 'self' is not defined

Jason990420
最佳答案

说明

  1. 缩格部份代表是上一层的主体
  2. self.assertEqual(formatted_name,'Janis Joplin'), 只相对于class NamesTestCase缩格, 所以只属于class NamesTestCase的内容, 不属于test_first_last_name.
  3. NamesTestCase没有定义self, 它就是一个未定义的变量.
  4. self在test_first_last_name中作为参数, 实际上就是NamesTestCase的实例, 这个self只在test_first_last_name中存在, 也就是本地变量.
  5. 实例class 时会先执行内部, 函数/方法的部份只是定义, 待实例使用方法时, 才会执行方法.
  6. 出错是在实例class时, 内部并没有定义self, 所以结果就是变量未定义出错.
4年前 评论
Alexzedd (楼主) 4年前
讨论数量: 2
Jason990420

最后两行应该是def test_first_last_name(self):的内容, 应该要缩排, 不然self就是未定义的变量.

class NamesTestCase(unittest.TestCase):
    """测试name_function.py"""

    def test_first_last_name(self):
        """能够正确地处理像Janis Joplin这样的姓名吗?"""
        formatted_name=get_formatted_name('janis','joplin')
        self.assertEqual(formatted_name,'Janis Joplin')
4年前 评论
Alexzedd (楼主) 4年前
Jason990420

说明

  1. 缩格部份代表是上一层的主体
  2. self.assertEqual(formatted_name,'Janis Joplin'), 只相对于class NamesTestCase缩格, 所以只属于class NamesTestCase的内容, 不属于test_first_last_name.
  3. NamesTestCase没有定义self, 它就是一个未定义的变量.
  4. self在test_first_last_name中作为参数, 实际上就是NamesTestCase的实例, 这个self只在test_first_last_name中存在, 也就是本地变量.
  5. 实例class 时会先执行内部, 函数/方法的部份只是定义, 待实例使用方法时, 才会执行方法.
  6. 出错是在实例class时, 内部并没有定义self, 所以结果就是变量未定义出错.
4年前 评论
Alexzedd (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!