# 类
# 1、创建和使用类
# 创建类需使用关键字class
# 在python中,首字母大写的名称指的是类
# 类中的函数称之为方法
# __init__()是类中的一个特殊的方法,每当根据类创建新实例时,python就会自动运行它。
# __init__()在开头和末尾各有两个下划线,这是一种约定,避免python默认方法与普通方法发生名称冲突

class User():#定义一个名为User的类
    """用户类"""

    # 方法__init__()定义包含了三个形参:self、username和password
    # 其中self参数是必需的,还必须位于其他形参的前面
    # python在调用__init__()方法创建User实例时,将自动传入实参self
    # 每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法
    # 由于self会自动传递,因此每当我们创建User实例时,都只需要传递最后两个形参(username和password)的值
    # 定义的两个self前缀的变量(self.username和self.password)都可供类中所有方法使用,可以通过类的任何实例访问这些变量
    # self.username=username获取存储在形参username中的值,并将其存储到变量username中,然后改变量被关联到当前创建的实例
    # 可通过实例访问的变量称之为属性
    def __init__(self, username, password):
        """初始化属性username和password"""
        self.username = username
        self.password = password

    def login(self):
        """用户登录"""
        print("用户需要登录了!!!")

    def register(self):
        """用户注册"""
        print("用户需要注册了!!!")

# 2、根据类创建实例
first_user=User("张三","123")# 创建的User实例
print(first_user.username)# 打印username
print(first_user.password)# 打印password
# 2.1 访问属性
# 要访问实例的属性,可以使用句点表示法
print("用户名:"+first_user.username)# 访问username属性
print("密码:"+first_user.password)# 访问password属性
# 2.2 调用方法
# 根据类创建实例后,可以实例句点表示法来调用类中的定义的任何方法
# 语法格式如下:实例的名称.要调用的方法
first_user.login()# 调用User类中的login方法
first_user.register()# 调用User类中的register方法
# 2.3 创建多个实例
# 可按需求根据类创建任意数量的实例,可以将每个实例都存储在不同的变量中,或占用列表或字典的不同位置