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

day22作业详解的更多相关文章

  1. day6作业详解

    1.day6题目 1,老男孩好声⾳选秀⼤赛评委在打分的时候呢, 可以进⾏输入. 假设, 老男孩有10个评委. 让10个评委进⾏打分, 要求, 分数必须⼤于5分, 小于10分. 电影投票. 程序先给出⼀ ...

  2. day4列表作业详解

    1.day4题目 day4作业 1,写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian" ...

  3. day23作业详解

    1.题目 2.题目详解 点击查看详细内容 1. 1-1 封装 把功能封装到类中 class Message(object): def email(self):pass def msg(self):pa ...

  4. day13列表推导式作业详解

    1.day13题目 2,用列表推导式做下列小题 (1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 (3)求M ...

  5. day10函数作业详解

    1.day10题目 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) 3,读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么? a=10 b=20 def test5(a,b): ...

  6. day9函数作业详解

    1.day9题目 1,整理函数相关知识点,写博客. 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. 3,写函数,判断用户传入的对象(字符串.列表.元组 ...

  7. day8文件操作作业详解

    1.day8题目 1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读 ...

  8. day7计算作业详解

    1.day7题目 1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 13 + 53 + 3**3 2.给 ...

  9. day5字典作业详解

    1.day5题目 1.有如下变量(tu是个元祖),请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2&q ...

随机推荐

  1. 08 - Django应用第五步

    1 自动测试 自动测试与测试的不同在于, 自动测试的测试工作是交给系统完成的 测试也有分类和级别, 有的用于一些细微的细节, 有的是针对整个软件整体 测试会保证一些看起来正常运行的功能在实际的多种情况 ...

  2. linux命令学习笔记(56):netstat命令

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况. netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UD ...

  3. Chrome focus样式

    -webkit-box-shadow: 0 0 0 1000px #131313 inset;//获取焦点时候可以去除背景色 -webkit-text-fill-color: #fff;//字体颜色

  4. C++ 播放音频流(PCM裸流)

    直接上代码,如果有需要可以直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用了(注意将声道和频率与你自己的文件对应哦).当然我自己也用VS2008(VS2013好用太多,强烈推荐还是用V ...

  5. java基础回顾之IO

    Java的IO 是Java运用重要部分之一,涉及到的内容也比较多,容易混淆,一段时间不用,可能就会遗忘,要时常回顾记忆一下: (图片来源于网络) Java 流在处理上分为字符流和字节流. 字符流处理的 ...

  6. LOJ2719 「NOI2018」冒泡排序

    「NOI2018」冒泡排序 题目描述 最近,小S 对冒泡排序产生了浓厚的兴趣.为了问题简单,小 S 只研究对 1 到n 的排列的冒泡排序. 下面是对冒泡排序的算法描述. 输入:一个长度为n 的排列p[ ...

  7. bzoj 4044: Virus synthesis 回文自动机

    题目大意: 你要用ATGC四个字母用两种操作拼出给定的串: 将其中一个字符放在已有串开头或者结尾 将已有串复制,然后reverse,再接在已有串的头部或者尾部 一开始已有串为空.求最少操作次数. le ...

  8. Poj 2247 Humble Numbers(求只能被2,3,5, 7 整除的数)

    一.题目大意 本题要求写出前5482个仅能被2,3,5, 7 整除的数. 二.题解 这道题从本质上和Poj 1338 Ugly Numbers(数学推导)是一样的原理,只需要在原来的基础上加上7的运算 ...

  9. 创建Azure Blob Snapshot的脚本

    在前面的文章中介绍了如何创建Azure Blob Snapshot.那篇文章中创建的脚本思路是:遍历所有Storage Account,找到所有vhd文件,进行Snapshot的创建. 但这种方式不够 ...

  10. modbus读输入状态与读线圈状态的区别?

    01 读线圈状态 描述 读从机离散量输出口的 ON/OFF 状态,不支持广播.附录B列出由不同控制器型号支持最大的参数清单. 查询 查询信息规定了要读的起始线圈和线圈量,线圈的起始地址为零,1-16个 ...