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('密码修改成功')
欢迎转载,但要标明出处.否则追究.欢迎大家阅读收藏和评论,会更新很多精粹。

浙公网安备 33010602011771号