day23作业详解
1.题目
2.题目详解
点击查看详细内容
1.
1-1 封装
把功能封装到类中
class Message(object):
def email(self):pass
def msg(self):pass
def wechat(self):pass
初始化方法,把封装数据给其他方法使用
class Dog(object):
def init(self,name):
self.name = name
def bulk(self):
print("%s:wang wang wang" %self.name)
1-2 继承
class Father(object):
def func1(self):
print('in func1')
class Son(Father):
def func2(self):
print('in func2')
obj = Son()
obj.func1()
1-3 多态
Python原生支持多态,所在多态在python中没有特殊性
面向对象的变量:类变量,实例变量
类变量(静态字段)
公有类变量(静态字段)
私有类变量(私有静态字段(
实例变量(字段)
公有实例变量(字段)
私有实例变量(私有字段)
class Foo:
country = '中国' # 类变量
def __init__(self,name):
self.name = name # 实例变量
obj1 = Foo('王小明')
obj2 = Foo('小樱')
Foo.country = '法国'
print(obj1.country)
print(obj2.country)
obj1.name = '大头'
print(obj1.name)
面向对象的方法
实例方法:使用对象封装__init__方法的值是,用实例方法
静态方法:方法中使用对象中封装的值是,使用静态方法
类方法:在方法中需要用到当前类时,用类方法
3-1.实例方法:
class Foo(object):
def __init__(self,name):
self.name = name
def func(self):
print(self.name)
obj = Foo('爱丽丝')
obj.func()
3-2.静态方法和类方法:
class Foo(object):
@staticmethod
def static():
print('666')
@classmethod
def show(cls):
print(cls)
Foo.static()
obj = Foo()
obj.static()
Foo.show()
class Foo(object):
@property
def func1(self):
return 1
@property
def func2(self):
return 9
obj = Foo()
print(obj.func1)
print(obj.func2)
5.静态方法和类方法的区别?
1.编写时:
静态方法:@staticmethod,参数可有可无
类方法:@classmethod,至少有一个参数
实例方法:普通的方法,调用对象封装的值
2.调用时:
静态方法和类方法:类名.方法名()
实例方法:对象名.方法名()
3.应用场景:
如果在方法内部不会用到对象相关的数据时,就可以用静态方法或类方法。需要用到对象相关的数据时,才用实例方法。
如果在方法中需要用当前类时,类方法默认传参是当前类,可以用类方法。
6.定义时不需要写参数:静态方法
7.面向对象中公有成员和私有成员有什么不同?
公有成员:可以在外部直接调用
私有成员:定义时加"__",只能在内部调用
1 12
999 11 11 AttributeError
666 1 error error 1 error
666 1 18 99 1 1000 1098
class Foo(object):
hobby = "大保健"
def __init__(self,num):
self.num = num
self.__salary = 1000
def f1(self):
print(Foo.hobby)
@staticmethod
def f2():
print(Foo.hobby)
@classmethod
def f3(cls):
print(cls.hobby)
obj = Foo(1)
obj.f1()
obj.f2()
obj.f3()
Foo类
Foo类
Foo类
Foo类
foo.f2
base.f1
Foo类
class Foo(object):
@staticmethod
def __func1():
print('func1')
def func2(self):
print('func2')
self.__func1()
obj = Foo()
obj.__func1 外部不可调用
obj.func2() #通过内部方法间接调用
class Page(object):
def init(self,lst,page_num=0,dis_page=10):
self.lst = lst
self.page_num = page_num
self.dis_page = dis_page
@property
def start(self):
return (self.page_num -1) * self.dis_page
@property
def end(self):
return self.page_num * self.dis_page
def show(self):
self.page_num = int(input('请输入查看的页码:'))
for i in self.lst[self.start:self.end]:
print(i)
lst = ['alex-%s' %i for i in range(1,101)]
while 1:
obj = Page(lst)
obj.show()
19. 三个类之间的嵌套
class School(object):
def init(self,address):
self.address = address
class Course(object):
def init(self,name,period,price,school=None):
self.name = name
self.period = period
self.price = price
self.school = school
class Grade(object):
def init(self,name,people,introduce,course=None):
self.name = name
self.people = people
self.introduce = introduce
self.course = course
1.学校
bj = School('北京')
sh = School('上海')
sz = School('深圳')
2.课程
py1 = Course('Python全栈',110,19999,bj)
py2 = Course('Python全栈',110,19999,sh)
py3 = Course('Python全栈',110,19999,sz)
l1 = Course('Linux运维',110,19999,sh)
g1 = Course('Go开发',119,19999,bj)
3.课程开班
gra1 = Grade('全栈21期:',55,'北京GO全栈开发21期',g1)
gra2 = Grade('Linux运维1期:',45,'上海Linux运维1期',l1)
gra3 = Grade('全栈1期:',45,'深圳全栈开发1期',py3)
day23作业详解的更多相关文章
- day22作业详解
1.面向对象作业1 2.作业详解 点击查看详细内容 #1. class Li(object): def func1(self): print('in func1') obj = Li() obj.fu ...
- day6作业详解
1.day6题目 1,老男孩好声⾳选秀⼤赛评委在打分的时候呢, 可以进⾏输入. 假设, 老男孩有10个评委. 让10个评委进⾏打分, 要求, 分数必须⼤于5分, 小于10分. 电影投票. 程序先给出⼀ ...
- day4列表作业详解
1.day4题目 day4作业 1,写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian" ...
- day13列表推导式作业详解
1.day13题目 2,用列表推导式做下列小题 (1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 (3)求M ...
- day10函数作业详解
1.day10题目 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) 3,读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么? a=10 b=20 def test5(a,b): ...
- day9函数作业详解
1.day9题目 1,整理函数相关知识点,写博客. 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. 3,写函数,判断用户传入的对象(字符串.列表.元组 ...
- day8文件操作作业详解
1.day8题目 1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读 ...
- day7计算作业详解
1.day7题目 1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 13 + 53 + 3**3 2.给 ...
- day5字典作业详解
1.day5题目 1.有如下变量(tu是个元祖),请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2&q ...
随机推荐
- 【二叉查找树】01不同的二叉查找树的个数【Unique Binary Search Trees】
当数组为1,2,3,4,...,n时,基于以下原则构建的BST树具有唯一性: 以i为根节点的树,其左子树由[1,i-1]构成,其右子树由[i+1, n]构成. 我们假定f(i)为以[1,i]能产生的U ...
- 在oracle中,select语句查询字段中非纯数字值
最近,将原来的数字符字段转换为数字时,总报错误:无效数字. 如何找出其中哪些是非数字字符的记录?比较麻烦的事.下面是用Oracle DB自带的函数translate可以找出来的 1.创建测试表 Cre ...
- MySQL的分页技术总结
利用子查询示例: SELECT * FROM your_table WHERE id <= (SELECT id FROM your_table ORDER BY id desc LIMIT ( ...
- POJ2513(字典树+图的连通性判断)
//用map映射TLE,字典树就AC了#include"cstdio" #include"set" using namespace std; ; ;//26个小 ...
- JavaScript权威指南读书笔记【第一章】
第一章 JavaScript概述 前端三大技能: HTML: 描述网页内容 CSS: 描述网页样式 JavaScript: 描述网页行为 特点:动态.弱类型.适合面向对象和函数式编程的风格 语法源自J ...
- webrower + CEF
理解WebKit和Chromium: Content API和CEF3 标签: apiAPIAPibrowserchromeChromehtml5HTML5Html5web ...
- LaTeX技巧203:如何实现等号对齐_LaTeX_Fun_新浪博客
LaTeX技巧203:如何实现等号对齐_LaTeX_Fun_新浪博客 我们在进行公式的输入排版的时候,通常希望公式比较齐整,所以需要一些等号对齐,或者左对齐,关于公式的左对齐前文已经介绍了方法.htt ...
- 关于使用struts2跳转后css和js失效的解决方式
根据观察,主要是由于通过action跳转后的url会根据命名空间,自动跳转到命名空间子目录,使得当前引用的css和js查找不到,从而失效,根据这个原因,可使用四种办法解决: 1.使用struts2.x ...
- TCP/IP的3次握手和4次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示. (1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等 ...
- 仿QQ底部切换(Fragment + Radio)
第一步: activity_main.xml 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/ ...