• day22作业详解


    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 Pr(object):
    def func(self,a1):
    print(a1)

    obj = Pr()
    obj.func('哈哈')

    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()

  • 相关阅读:
    app测试和web测试的相同点和不同点
    重写 和 重载
    23种设计模式总概括
    小程序webview跳转页面后没有返回按钮完美解决方案
    服务器配置https协议,三种免费的方法
    Android通过外部浏览器调用微信H5支付,Android+PHP详解
    vue多级复杂列表展开/折叠,全选/分组全选实现
    A very good RPC debugging session
    在WinForms中使用ActiveX
    Lauch Debugger automatically when start the process
  • 原文地址:https://www.cnblogs.com/byho/p/10869755.html
Copyright © 2020-2023  润新知