• python学习——面向对象练习1


    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()
    详解
  • 相关阅读:
    BZOJ2286 [Sdoi2011]消耗战 【虚树 + 树形Dp】
    BZOJ1305 [CQOI2009]dance跳舞 【网络流】
    BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】
    BZOJ1103 [POI2007]大都市meg 【树剖】
    BZOJ1927 [Sdoi2010]星际竞速 【费用流】
    POJ3450 Corporate Identity 【后缀数组】
    POJ3623 Best Cow Line, Gold 【后缀数组】
    POJ3415 Common Substrings 【后缀数组 + 单调栈】
    关于线上bug
    关于线上bug
  • 原文地址:https://www.cnblogs.com/bilx/p/11377011.html
Copyright © 2020-2023  润新知