【问题标题】:Can't import python classes无法导入 python 类
【发布时间】:2018-11-19 17:06:55
【问题描述】:

我在导入时遇到了一个简单的错误 但是如何解决呢?;)) 我是菜鸟,正在测试任务

其中一个条件是将父类与子类分开! 也就是说,一切都很好,它们的位置 [classes_1.py, classes_2.py]

主要:

n10_12.py

from classes_1 import User
from classes_2 import Privileges, Admin

admin_33 = Admin('mike', 'logsdale', 'africa', 'customer')

admin_33.privilege.show_privileges()
admin_33.descibe_user()

类两个文件:

1)

classes_1.py

class User():

    def __init__(self, first_name, last_name, location='', field=''):
        self.first_name = first_name
        self.last_name = last_name
        self.location = location
        self.field = field
        self.full_name = self.first_name.title() + ' ' + self.last_name.title()
        self.login_attemts = 0

    def descibe_user(self):

        print('\nFull name: ' + self.full_name + 
            '\nLocation: ' + self.location.title() + 
            '\nField: ' + self.field.title() + '\n'
            )

    def greet_user(self):
        print('Hello, ' + self.full_name)

    def read_login_attemts(self):
        print('In this time login attempts are ' + str(self.login_attemts))

    def increment_login_attempts(self):
        self.login_attemts += 1

    def reset_login_attempts(self):
        self.login_attemts = 0

2)

classes_2.py

class Privileges():
    def __init__(self):
        self.privileges = [
                    'access to add msg',
                    'access to delete users',
                    'access to ban users',
                     ]


    def show_privileges(self):
        print('Hi Admin, your privileges is: ')
        for kk in self.privileges:
            print('\n- ' + kk.lower())




class Admin(User):

    def __init__(self, first_name, last_name, location='', field=''):
        super().__init__(first_name, last_name, location, field)
        self.privilege = Privileges()

追溯:

python n10_12.py

Traceback(最近一次调用最后一次):

文件“n10_12.py”,第 2 行,在 从 classes_2 导入权限,管理员

文件 ..\classes_2.py",第 28 行,在 类管理员(用户):

NameError:名称“用户”未定义

【问题讨论】:

  • 错误很明显,User 在您的第二个 .py 文件中未定义。

标签: python python-3.x


【解决方案1】:

您需要在 classes_2.py 中导入用户:

from classes_1 import User

class Privileges():
    def __init__(self):
        self.privileges = [
                    'access to add msg',
                    'access to delete users',
                    'access to ban users',
                     ]


    def show_privileges(self):
        print('Hi Admin, your privileges is: ')
        for kk in self.privileges:
            print('\n- ' + kk.lower())  

class Admin(User):
    def __init__(self, first_name, last_name, location='', field=''):
        super().__init__(first_name, last_name, location, field)
        self.privilege = Privileges()

【讨论】:

  • 对不起,我忘了指定条件..(条件之一是将父类与子类分开!也就是说,一切都很好,它们的位置[classes_1.py,classes_2.py])
  • @Izzumi 好的,然后你需要导入它。顺便说一句,您应该知道,这不是 Python 中的常见模式,也就是说,所有类都在单独的文件中。
  • @Izzumi 不确定是否理解。他们不是已经分开了吗? (管理员在 classes_2 中,用户在 classes_1 中?)。或者你的意思是你想稍后指定哪个类 Admin 继承? (在 n10_12.py 中)
  • @juanpa.arrivillaga 谢谢我明白了;)
猜你喜欢
  • 2016-04-15
  • 2022-10-19
  • 2021-10-23
  • 2022-06-23
  • 2016-03-31
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
相关资源
最近更新 更多