【发布时间】:2020-12-14 00:21:37
【问题描述】:
Python 速成课程:基于项目的动手实践介绍 编程
当我读这本书时,我有一个问题。
为什么我只需要从 'admin' 导入 'Admin'?
在我看来,“test.py”中的第一行代码意味着它只复制了“Admin”类代码。
因此,第二行和第三行代码不会成功运行,因为它没有结束代码块'from user import User'和类'Privileges'的定义。
任何帮助将不胜感激!
test.py
from admin import Admin # line 1
my_admin = Admin('Jade', 'Lam', 'male', '22') # line 2
my_admin.privileges.show_privileges() # line 3
print('\n')
admin.py
from user import User
class Admin(User):
def __init__(self, first_name, last_name, sex, age):
super().__init__(first_name, last_name, sex, age)
self.privileges = Privileges()
class Privileges():
def __init__(self):
self.privileges = ['can add post', 'can delete post',
'can ban user']
def show_privileges(self):
print("Admin's privileges: ")
for privilege in self.privileges:
print("--" + privilege)
user.py
class User():
def __init__(self, first_name, last_name, sex, age):
self.first_name = first_name.title()
self.last_name = last_name.title()
self.sex = sex
self.age = age
def describe_user(self):
--snip--
def greet_user(self):
--snip--
【问题讨论】:
-
第一次导入模块时,会加载整个模块,但使用
from admin import Admin表单时,您只是在当前命名空间中保留了对名称 Admin 的引用。但是模块的整个代码仍然运行。 -
至少它的可执行语句。
-
谢谢!虽然不知道它的运行原理。
-
请参阅我的答案中的示例。
标签: python class import module