1.面向对象作业1

2.作业详解

点击查看详细内容

  1. #1.
  2. class Li(object):
  3. def func1(self):
  4. print('in func1')
  5. obj = Li()

  6. obj.func1()
  7. 2.用代码

  8. 封装

  9. a.将相关功能封装到一个类中
  10. b.将数据封装到一个对象中
  11. a.

  12. class Login(object):

  13. def register(self):pass
  14. def login(self):pass
  15. b.

  16. class Person(object):

  17. def init(self,name,age,gender):

  18. self.name = name

  19. self.age = age

  20. self.gender = gender

  21. obj = Person('Alex',44,'男')

  22. 继承

  23. 提高代码重用性
  24. 原则:现在自己类中找,找不到再去父类中找
  25. class Father(object):

  26. def func1(self):

  27. print('in func1')

  28. class Son(Father):

  29. def func2(self):

  30. print('in func2')

  31. obj = Son()

  32. obj.func2()

  33. 多态

  34. 多种形状或多种状态,其他语言传参时只能传指定的一种类的对象
  35. 3.

  36. class Pr(object):

  37. def func(self,a1):

  38. print(a1)

  39. obj = Pr()

  40. obj.func('哈哈')

  41. 4.方法和函数的区别

  42. a.函数放在类中就是方法,参数多了一个self
  43. b.方法调用时要通过实例化对象调用
  44. 5.什么是真正的构造方法

  45. a.将数据封装到对象中,以供自己的方法调用
  46. b.将数据封装到对象中,以供其他函数调用
  47. c.先执行 __new__ 方法,构造方法return创建obj,给 __init__ 初始化
  48. class Foo(object):

  49. def __init__(self,a1):  # 初始化方法
  50.     '''
  51.     为__new__创建的obj进行数据初始化,把数据放到创建obj中,可以被其他方法调用
  52.     :param a1:
  53.     '''
  54.     print(1)
  55.     self.a1 = a1
  56.     print(a1)
  57. def __new__(cls, *args, **kwargs):  # 真正的构造方法
  58.     '''
  59.     创建一个空对象,必须要有return把创建obj返回给__init__
  60.     :param args:
  61.     :param kwargs:
  62.     :return:
  63.     '''
  64.     print(2)
  65.     return object.__new__(cls)      # Python内部创建一个当前类的对象(初创时内部是空的。)
  66. obj = Foo(99)

  67. 6.面向对象中的self指的是什么?

  68. self指的是类对象对应的类
  69. 7.

  70. 封装,把数据封装到初始化方法中

  71. 8.

  72. 封装,把数据封装到类中

  73. 9.

  74. foo.func

  75. None

  76. 10.

  77. class calc_y(object):

  78. def init(self,ban):

  79. self.ban = ban

  80. def c_zhou(self):
  81.     print('zhou*%s'%self.ban)
  82. def c_mian(self):
  83.     print('mian*%s'%self.ban)
  84. obj = calc_y(3)

  85. obj.c_zhou()

  86. obj.c_mian()

  87. 11.增加代码重用性

  88. 继承原则:先在自己类中找,找不到再去父类找

  89. 12.

  90. a.自身类 > 左边父类 > 右边父类

  91. b.self是哪个类的对象,就从该类开始找

  92. 13.

  93. foo.f0

  94. base2.f3

  95. base1.1

  96. 14. 报错,因为调用的对象是Base

  97. 15.

  98. class User(object):

  99. def init(self,user,pwd,email):

  100. self.user = user

  101. self.pwd = pwd

  102. self.email = email

  103. class Input(object):

  104. def run(self):

  105. user_list = []

  106. n = 0

  107. while n<3:

  108. n += 1

  109. user = input("请输入用户名:")

  110. pwd = input("请输入密码:")

  111. email = input("请输入邮箱:")

  112. obj = User(user,pwd,email)

  113. user_list.append(obj)

  114. else:

  115. for i in user_list:

  116. print(i.user,i.pwd,i.email)

  117. obj = Input()

  118. obj.run()

  119. 16.

  120. class User:

  121. def __init__(self,name,pwd):
  122.     self.name = name
  123.     self.pwd = pwd
  124. class Account:

  125. def __init__(self):
  126.     self.user_list = []     # 用户列表,数据格式:[User对象.User对象.User对象]
  127. def login(self):
  128.     name = input("请输入登录账号:")
  129.     pwd = input("请输入登录密码:")
  130.     flag = False
  131.     for user in self.user_list:
  132.         # print(user.name,user.pwd)
  133.         if name == user.name and pwd == user.pwd:
  134.             flag = True
  135.             break
  136.     if flag:
  137.         print("登陆成功 !")
  138.     else:
  139.         print("登录失败 ~")
  140. def register(self):
  141.     i = 1
  142.     while i<3:
  143.         i+=1
  144.         name = input("请输入注册用户名:")
  145.         pwd = input("请设置注册密码:")
  146.         reg_user = User(name,pwd)       # 动态创建User对象,添加到self.user_list中
  147.         self.user_list.append(reg_user)
  148. def run(self):
  149.     self.register()
  150.     self.login()
  151. if name == 'main':

  152. obj = Account()

  153. 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. 如何查看myeclipse是否激活

    myEclipse---->Subscription information--->Subscription expiration date 看这个日期到什么时候!另外建议别用太高版本的M ...

  2. C语言小程序(五)、数组查询

    随机产生一些字符,然后输入要查找的字符,本想将查找到的字符存储起来,要么初始化一个等大小的数组,要么要先检索出总共查找到多少个元素,再开辟空间存储,但这样相当于搜索了两遍,没有想到更好的方法,只是简单 ...

  3. HihoCoder1338 A Game(记忆化搜索)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi and Little Ho are playing a game. There is an integ ...

  4. Nodejs文件相关操作

    欢迎关注我的博客我在马路边 适用人群 本文适用于刚接触Node的小白,毕竟我也是小白,大佬请绕行. Node文件操作 在实际开发中遇到很多有关文件及文件夹的操作,比如创建.删除文件及文件夹,文件拷贝. ...

  5. tarjan求割点

    首先给大家一个网址讲的比较细:http://www.cnblogs.com/en-heng/p/4002658.html 如果还有不懂的话,可以回来再看看我的文章; 概念明确: 树边:(在[2]中称为 ...

  6. tarjian求lca

    看了好多dalao的博客,就总结一下啦ovo tarjian算法很是神奇,它的作用是求lca.它是一种离线算法. 在线是指输入一个询问输出一个结果. 离线是将询问一次性输入,一起处理. tarjan它 ...

  7. vue 常见的新增、编辑、查看公用同一个页面

    用vue开发经常会碰到,一个功能的新增.编辑.查看公用同一个页面,如果是页面暂且不提. 但是弹框,很多人会发现,如果是点击编辑,取消,再点新增,弹框上面是会有残留数据的,为什么会这样呢,因为在点编辑的 ...

  8. Python Class 的实例方法/类方法/静态方法

    实例方法.类方法.静态方法 class MyClass(object): class_name = "MyClass" # 类属性, 三种方法都能调用 def __init__(s ...

  9. Aravis 库编译方法

    Aravis 库编译方法 March 21, 2015 9:40 PM 首先下载 aravis 库的源代码:aravis 库下载地址 这里我们使用的是 aravis_0_2_0,比较老的一个版本. 首 ...

  10. DTP模型之一:(XA协议之一)XA协议、二阶段2PC、三阶段3PC提交

    XA协议 XA是一个分布式事务协议,由Tuxedo提出.XA中大致分为两部分:事务管理器和本地资源管理器.其中本地资源管理器往往由数据库实现,比如Oracle.DB2这些商业数据库都实现了XA接口,而 ...