鱼C论坛

 找回密码
 立即注册
查看: 632|回复: 2

[已解决]在一个模块中导入了多个类后,为什么在没有调用a方法的情况下执行了a方法

[复制链接]
发表于 2019-5-14 00:46:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在第一个模块里我只创建了一个Admin的实例,但是却执行了show_privileges方法,这是为什么?
这是那个模块
  1. from user_information import User,Admin
  2. hy = Admin('h','y',12,'male')
复制代码

这是该模块的输出
  1. The user name is HuangYu.
  2. The user age is 11.
  3. The user sex is male.
  4. Hello,Huang Yu !
  5. Administrators have the right to can add post,can delete post,can ban user.
复制代码

这是被导入的方法所在模块
  1. class User():
  2.     def __init__(self,first_name,last_name,age,sex):
  3.         self.first_name = first_name
  4.         self.last_name = last_name
  5.         self.age = age
  6.         self.sex = sex
  7.         
  8.     def describe_user(self):
  9.         print("The user name is " + self.first_name.title() + self.last_name.title() + ".")
  10.         print("The user age is " + str(self.age) + ".")
  11.         print("The user sex is " + self.sex + ".")
  12.         
  13.     def greet_user(self):
  14.         print("Hello," + self.first_name.title() + " " + self.last_name.title() + " !")
  15.    
  16. class Admin(User):

  17.     def __init__(self,first_name,last_name,age,sex):
  18.         
  19.         super().__init__(first_name,last_name,age,sex)
  20.         self.privilege = Privileges()


  21. class Privileges():
  22.     def __init__(self,privileges=['can add post','can delete post','can ban user']):
  23.         self.privileges = privileges
  24.    
  25.     def show_privileges(self):
  26.         print('Administrators have the right to',','.join(self.privileges) + '.')

  27. u = Admin('huang','yu',11,'male')
  28. u.describe_user()
  29. u.greet_user()
  30. u.privilege.show_privileges()
复制代码

这是输出
  1. The user name is HuangYu.
  2. The user age is 11.
  3. The user sex is male.
  4. Hello,Huang Yu !
  5. Administrators have the right to can add post,can delete post,can ban user.
复制代码
最佳答案
2019-5-14 03:44:37
  1. if __name__ == '__main__':
  2.     u = Admin('huang', 'yu', 11, 'male')
  3.     u.describe_user()
  4.     u.greet_user()
  5.     u.privilege.show_privileges()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-14 03:44:37 | 显示全部楼层    本楼为最佳答案   
  1. if __name__ == '__main__':
  2.     u = Admin('huang', 'yu', 11, 'male')
  3.     u.describe_user()
  4.     u.greet_user()
  5.     u.privilege.show_privileges()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-14 11:27:02 | 显示全部楼层
一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 17:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表