python面向对象-01

"""object"""

# class Person:
#     def __init__(self,name,age,sex):
#         #所有的在一个具体的人物出现之后拥有的属性
#         print('-'*20)
#         self.name = name
#         self.age = age
#         self.sex = sex
#         print('*'*20)
# u1 = Person('u1',25,'male')
# # u1.sex='fe'
# print(u1.sex)

"""
实例化经历的步骤:
1.类名()之后,第一件事,开辟一块内存空间
2.调用__init__方法,把空间的内存地址作为self参数传递到函数内部
3.所有这个对象需要使用的属性,都需要与self关联起来  把属性的值,存储在self空间中。
4.执行完__init__中的逻辑之后,self变量会自动的返回到调用处(发生实例化的地方)
"""

# class Test:
#     def __init__(self, radius):
#         self.radius = radius
# t = Test('5')
# print(t.__dict__)  #打印类中的所有属性

# 练习1 定义一个圆形类,半径是这个圆的属性,实例化一个半径为5的圆,一个半径为10的圆形
# 完成方法:
#     计算圆的周长
# 计算圆的面积
from math import pi


class Circle:
    def __init__(self, radius):
        self.radius = radius
        print('-----' * 20)

    def area(self):
        return pi * self.radius ** 2

    def perimeter(self):
        return pi * self.radius * 2


# 实例化一个半径为5的圆形
# circle1 = Circle(5)
# print(circle1.area())
# print(circle1.perimeter())
# # print(circle1)
# # 实例化一个半径为10的圆形
# circle2 = Circle(10)
# print(circle2.area())
# print(circle2.perimeter())

# 练习2 定义一个用户类,用户名和密码是这个用户类的属性,实例化两个用户,分别有着不同的用户名和密码
# 登录成功之后才创建用户对象
# 设计一个方法,修改密码
import os


# 用户登录函数
def login(username, passwd, filepath='userinfo'):
    with open(filepath, encoding='utf-8')as f:
        for line in f:
            user, pwd = line.strip().split(':')
            if user == username and pwd == passwd:
                return True, username, passwd
            else:
                return False


class User:
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def change_passwd(self):
        oldpwd = input('输入原密码:')
        newpwd = input("输入新密码:")
        flag = False
        with open("userinfo", encoding='utf-8') as f1, open('userinfo.bak', mode='w', encoding='utf-8') as f2:
            for line in f1:
                username, passwd = line.strip().split(":")
                if username == self.username and passwd == oldpwd:
                    line = "%s:%s\n" % (username, newpwd)
                    flag = True
                f2.write(line)
        os.remove('userinfo')
        os.rename('userinfo.bak', 'userinfo')
        return flag


# 接收用户输入
username = input("user:")
passwd = input("passwd:")
ret = login(username, passwd)
if ret:
    print('登录成功!!!')
    obj = User(username, passwd)
    res = obj.change_passwd()
    if res: print('密码修改成功')

posted @ 2020-11-09 09:47  精灵中的二丫  阅读(77)  评论(0)    收藏  举报