user.py
class User(): # 定义一个名为User的类
"""用户类"""
def __init__(self, username, password):
"""初始化属性username和password"""
self.username = username
self.password = password
self.isVIP=False
def login(self):
"""用户登录"""
print("用户需要登录了!!!")
def register(self):
"""用户注册"""
print("用户需要注册了!!!")
def is_vip(self):
"""获取用户是否是VIP用户"""
if self.isVIP:
print("该用户是VIP用户")
else:
print("该用户不是VIP用户")
class VIPUser(User):# 该类继承自User类
"""VIP用户"""
def __init__(self, username, password):
"""初始化父类的属性"""
super().__init__(username, password)
self.free = True # 添加一个属性,VIP用户拥有很多免费特权,并设置其初始值为True
def get_free(self):
"""获取更多的免费特权"""
print("我能够每天签到领奖")
print("我能够获取更多的优惠")
def register(self): # 重写父类的register()方法
print("VIP用户注册即可领取大礼包")
类的导入实例及讲解
# 4、导入类
# 4.1 导入单个类
# python允许你将类存储在模块中,然后在主程序中导入所需要的模块
# 导入单个类的语法如下:from python_file_name import class_name
from user import User # 从user.py文件中导入User类
first_user = User("张三", "123") # 创建User类的实例
first_user.isVIP = True # 设置属性
first_user.is_vip() # 调用方法
# 4.2 从一个模块中导入多个类
# 一个模块(一个python文件)可以存储多个类
# 可根据需要在程序文件中导入任意数量的类
# 从一个模块中导入多个类时,用逗号分隔各个类
# 从一个模块中导入多个类的语法如下:from python_file_name import class_name1,class_name2,class_name3
from user import User, VIPUser # 从user.py文件中导入User、VIPUser类
second_user = User("张三", "123") # 创建User类的实例
second_user.register() # 调用register()方法
third_user = VIPUser("李世民", "abc") # 创建VIPUser类的实例
third_user.register() # 调用register()方法
# 4.3 导入整个模块
# 导入整个模块,然后使用句点表示法访问现需要的类
# 由于创建类实例的代码都包含模块名,因此不会与当前使用的任何名称发生冲突
# 导入整个模块的语法如下:import module_name
import user # 导入整个模块
fourth_user = user.User("李四", "rfv") # 实例化User类
fourth_user.login() # 调用login()方法
# 4.4 导入模块中的所有类
# 但是不推荐这种导入方式,因为可能发生命名成上的冲突
# 导入模块中的所有类的语法如下:from module_name import *
# 4.5 在一个模块中导入另一个模块
# 有时候,需要将类分散到多个模块中,以免模块太大,或在同一个模块中存储不相关的类。
# 将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。
# 在这种情况下,可在前一个模块中导入必要的类。
# 在一个模块中导入另一个模块语法如下:from module_name import class_name
类的命名规范:
- 类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
- 对于每个类,都应紧跟在类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定。每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
- 可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
- 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的 import 语句,再添加一个空行,然后编写导入你自己编写的模块的 import 语句。在包含多条 import 语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方。