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

原文地址:https://www.cnblogs.com/byho/p/10869755.html