1.面向对象作业1
2.作业详解
#1. class Li(object): def func1(self): print('in func1') obj = Li() obj.func1() #2.用代码 #封装 a.将相关功能封装到一个类中 b.将数据封装到一个对象中 #a. class Login(object): def register(self):pass def login(self):pass #b. class Person(object): def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender obj = Person('Alex',44,'男') #继承 提高代码重用性 原则:现在自己类中找,找不到再去父类中找 class Father(object): def func1(self): print('in func1') class Son(Father): def func2(self): print('in func2') obj = Son() obj.func2() #多态 多种形状或多种状态,其他语言传参时只能传指定的一种类的对象 #3. class Fq: def func(self,a1): print(a1) obj = Fq() obj.func('hahaha') #4.方法和函数的区别 a.函数放在类中就是方法,参数多了一个self b.方法调用时要通过实例化对象调用 #5.什么是真正的构造方法 a.将数据封装到对象中,以供自己的方法调用 b.将数据封装到对象中,以供其他函数调用 c.先执行 __new__ 方法,构造方法return创建obj,给 __init__ 初始化 class Foo(object): def __init__(self,a1): # 初始化方法 ''' 为__new__创建的obj进行数据初始化,把数据放到创建obj中,可以被其他方法调用 :param a1: ''' print(1) self.a1 = a1 print(a1) def __new__(cls, *args, **kwargs): # 真正的构造方法 ''' 创建一个空对象,必须要有return把创建obj返回给__init__ :param args: :param kwargs: :return: ''' print(2) return object.__new__(cls) # Python内部创建一个当前类的对象(初创时内部是空的。) obj = Foo(99) #6.面向对象中的self指的是什么? self指的是类对象对应的类 #7. 封装,把数据封装到初始化方法中 #8. 封装,把数据封装到类中 #9. foo.func None #10. class calc_y(object): def __init__(self,ban): self.ban = ban def c_zhou(self): print('zhou*%s'%self.ban) def c_mian(self): print('mian*%s'%self.ban) obj = calc_y(3) obj.c_zhou() obj.c_mian() #11.增加代码重用性 继承原则:先在自己类中找,找不到再去父类找 #12. a.自身类 > 左边父类 > 右边父类 b.self是哪个类的对象,就从该类开始找 #13. foo.f0 base2.f3 base1.1 #14. 报错,因为调用的对象是Base类 #15. class User(object): def __init__(self,user,pwd,email): self.user = user self.pwd = pwd self.email = email class Input(object): def run(self): user_list = [] n = 0 while n<3: n += 1 user = input("请输入用户名:") pwd = input("请输入密码:") email = input("请输入邮箱:") obj = User(user,pwd,email) user_list.append(obj) else: for i in user_list: print(i.user,i.pwd,i.email) obj = Input() obj.run() #16. class User: def __init__(self,name,pwd): self.name = name self.pwd = pwd class Account: def __init__(self): self.user_list = [] # 用户列表,数据格式:[User对象.User对象.User对象] def login(self): name = input("请输入登录账号:") pwd = input("请输入登录密码:") flag = False for user in self.user_list: # print(user.name,user.pwd) if name == user.name and pwd == user.pwd: flag = True break if flag: print("登陆成功 !") else: print("登录失败 ~") def register(self): i = 1 while i<3: i+=1 name = input("请输入注册用户名:") pwd = input("请设置注册密码:") reg_user = User(name,pwd) # 动态创建User对象,添加到self.user_list中 self.user_list.append(reg_user) def run(self): self.register() self.login() if __name__ == '__main__': obj = Account() obj.run()