day22作业详解 2.用代码 封装 a. b. 继承 多态 3. 4.方法和函数的区别 5.什么是真正的构造方法 6.面向对象中的self指的是什么? 7. 8. 9. 10. 11.增加代码重用性 12. 13. 14. 报错,因为调用的对象是Base类 15. 16.

1.面向对象作业1

day22作业详解
2.用代码
封装
a.
b.
继承
多态
3.
4.方法和函数的区别
5.什么是真正的构造方法
6.面向对象中的self指的是什么?
7.
8.
9.
10.
11.增加代码重用性
12.
13.
14. 报错,因为调用的对象是Base类
15.
16.

day22作业详解
2.用代码
封装
a.
b.
继承
多态
3.
4.方法和函数的区别
5.什么是真正的构造方法
6.面向对象中的self指的是什么?
7.
8.
9.
10.
11.增加代码重用性
12.
13.
14. 报错,因为调用的对象是Base类
15.
16.

day22作业详解
2.用代码
封装
a.
b.
继承
多态
3.
4.方法和函数的区别
5.什么是真正的构造方法
6.面向对象中的self指的是什么?
7.
8.
9.
10.
11.增加代码重用性
12.
13.
14. 报错,因为调用的对象是Base类
15.
16.

2.作业详解

点击查看详细内容
  
#1.
class Li(object):
    def func1(self):
        print('in func1')

obj = Li()
obj.func1()

封装

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