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. 1 12

  2. 999 11 11 AttributeError

  3. 666 1 error error 1 error

  4. 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作业详解的更多相关文章

  1. day22作业详解

    1.面向对象作业1 2.作业详解 点击查看详细内容 #1. class Li(object): def func1(self): print('in func1') obj = Li() obj.fu ...

  2. day6作业详解

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

  3. day4列表作业详解

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

  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. ffmpeg命令选项解释

    ffmpeg作为媒体文件处理软件,基本用法如下: ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile 输入输出文件通常就是待处理的多媒体文件了.可以是纯粹的音频文件,纯粹 ...

  2. Gym - 100801G: Graph (贪心+set+拓扑)(好题)

    题意:给定一个N点M边的有向图,叫你加最多K条边,使得最小拓扑序最大. 思路:不是那么简单的题.  参照了别人的代码, 最后想通了. 贪心原则: 用两个单调队列维护, 第一个序列S1单增, 表示当前入 ...

  3. 【LeetCode】033. Search in Rotated Sorted Array

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  4. bzoj 2716 [Violet 3]天使玩偶——KDtree

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2716 第三道KDtree!仍旧是模板.还有CDQ分治做法,见下面. 数组迷之开大?(开6e5 ...

  5. bzoj 4066 & bzoj 2683 简单题 —— K-D树(含重构)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 https://www.lydsy.com/JudgeOnline/problem.p ...

  6. 解决mysql 客户端连接问题

        问题:在linux 上安装了mysql服务端,使用客户端连接时报错信息为:ERROR 1045 (28000): Access denied for user 'root'@'localhos ...

  7. Poj 1019 Number Sequence( 数据分析和操作)

    一.题目大意 有这样一个序列包含S1,S2,S3...SK,每一个Si包括整数1到 i.求在这个序列中给定的整数n为下标的数. 例如,前80位为1121231234123451234561234567 ...

  8. Poj 1067 取石子游戏(NIM,威佐夫博奕)

    一.Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子. ...

  9. 使用PowerShell创建Azure Storage的SAS Token访问Azure Blob文件

    Azure的存储包含Storage Account.Container.Blob等具体的关系如下: 我们常用的blob存储,存放在Storage Account的Container里面. 目前有三种方 ...

  10. 【转】Pro Android学习笔记(十二):了解Intent(下)

    解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...