一 关于类中的self以及继承问题

请看下面一段代码

  1. class Base:
  2. def f1(self):
  3. self.f2()
  4.  
  5. def f2(self):
  6. print('...')
  7.  
  8. class Foo(Base):
  9. def f2(self):
  10. print('')
  11.  
  12. obj = Foo()
  13. obj.f1() #结果为9999

解说:Foo().f1() -->里面的self指的是实例化的对象,而对象继承的是Foo

实例化类Foo,执行对象的f1方法。由于对象没有f1方法,从父类Base中寻找。
找到f1方法,def f1(self): 此时self指向的是Foo类的对象。执行self.f2()
由于self是Foo类中的,从Foo类中寻找f2方法。找到了,执行输出9999
 

二类的私有属性继承问题

  1. class JustCounter:
  2. __secretCount = 0
  3.  
  4. def count(self):
  5. self.__secretCount += 1
  6. print(self.__secretCount)
  7.  
  8. class Bars(JustCounter):
  9.  
  10. def count(self):
  11. print(self.__secretCount)
  12.  
  13. counter1 = JustCounter()
  14. counter2 = Bars()
  15.  
  16. counter1.count()
  17. counter2.count() #类的私有属性不会被继承,这里会报错

三递归函数中变量累加覆盖的问题

使用递归函数的时候,需要一个变量一直累加,但是一旦重新递归函数的时候这个变量也会改变,怎么去做

  1. import os
  2. def get_size(path):
  3. ret=os.listdir(path)
  4. # print(ret)
  5. total=0
  6. for name in ret:
  7. # print(name)
  8. abs_path=os.path.join(path,name)
  9. if os.path.isdir(abs_path):
  10. total+=get_size(abs_path) #这里递归的同时total也累加了
  11. else:
  12. total+=os.path.getsize(abs_path)
  13. return total #这里总的大小会稍有变化
  14. print(get_size(r'G:\study\day13'))

四计算目录的大小

上面的例子是一个

下面使用堆栈的概念

  1. import os
  2. def get_size(path):
  3. dir_lst=[path]
  4. total=0
  5. while dir_lst:
  6. path=dir_lst.pop()
  7. ret=os.listdir(path)
  8. for name in ret:
  9. abs_path=os.path.join(path,name)
  10. if os.path.isdir(abs_path):
  11. dir_lst.append(abs_path)
  12. else:
  13. total+=os.path.getsize(abs_path)
  14. return total
  15. print(get_size(r'G:\study\day13'))

找出目录下面的所有文件,并按照从大到小排列

  1. import os
  2. my_list=[]
  3. def get_size(path):
  4. dir_lst=[path]
  5. while dir_lst:
  6. path=dir_lst.pop()
  7. ret=os.listdir(path)
  8. for name in ret:
  9. abs_path=os.path.join(path,name)
  10. if os.path.isdir(abs_path):
  11. dir_lst.append(abs_path)
  12. else:
  13. my_list.append((abs_path,os.path.getsize(abs_path)))
  14. return my_list
  15. aa=get_size(r'G:\study\day22\study-more\version')
  16. # print(aa)
  17.  
  18. bb=sorted(aa,key=lambda x:x[],reverse=True)
  19. print(bb)

五 递归中return的真正理解,跳出函数是跳出最近的函数,以三级菜单举例

  1. menu = {
  2. '北京': {
  3. '海淀': {
  4. '五道口': {
  5. 'soho': {},
  6. '网易': {},
  7. 'google': {}
  8. },
  9. '中关村': {
  10. '爱奇艺': {},
  11. '汽车之家': {},
  12. 'youku': {},
  13. },
  14. '上地': {
  15. '百度': {},
  16. },
  17. },
  18. '昌平': {
  19. '沙河': {
  20. '老男孩': {},
  21. '北航': {},
  22. },
  23. '天通苑': {},
  24. '回龙观': {},
  25. },
  26. '朝阳': {},
  27. '东城': {},
  28. },
  29. '上海': {
  30. '闵行': {
  31. "人民广场": {
  32. '炸鸡店': {}
  33. }
  34. },
  35. '闸北': {
  36. '火车战': {
  37. '携程': {}
  38. }
  39. },
  40. '浦东': {},
  41. },
  42. '山东': {},
  43. }

菜单字典

  1. def menu3(menu):
  2. while True:
  3. for key in menu:
  4. print(key)
  5. inp=input('>>>').strip()
  6. if inp in menu:
  7. ret=menu3(menu[inp]) #递归调用menu3函数,将是一个嵌套
  8. if ret=='q':return 'q'
  9. elif inp=='b':
  10. return 'b' #单纯的返回
  11. elif inp=='q':return 'q' #进入程序单独输入q,直接就是退出menu3函数,这个是没有嵌套的
  12. #进入菜单一直往下走的话,就是使用q在往嵌套函数menu3(menu[inp])的外面跳,直到不嵌套而退出
  13. menu3(menu)

三级菜单函数

三级菜单堆栈实现

  1. l=[menu]
  2. while l:
  3. for key in l[-1]:
  4. print(key)
  5. inp=input('>>>').strip()
  6. if inp in l[-1]:
  7. l.append(l[-1][inp])
  8. print(l)
  9. elif inp=='b':l.pop()
  10. elif inp=='q':break

python补充2的更多相关文章

  1. Python补充02 Python小技巧

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...

  2. Python补充06 Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...

  3. python补充最常见的内置函数

    最常见的内置函数是: print("Hello World!") 数学运算 abs(-5)                         # 取绝对值,也就是5 round(2. ...

  4. Python补充05 字符串格式化 (%操作符)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输 ...

  5. Python补充03 Python内置函数清单

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明. Python内置(built-in)函数随着python解释器的运行而创建.在Pytho ...

  6. Python补充04 Python简史

    原文:Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天, ...

  7. 【Python 补充01】Python运算符

    Python运算符 举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. 1.算术运算符 + - * / # 加减乘除 % # 取模(返回除 ...

  8. python补充3

    一单例模式 类:具体相同特征的一类事物,类似于模板 单例:常用的软件设计模式,用于设计一个类中只有一个实例且易于外界访问,可以对实例的个数控制并节约系统资源 运用场景:比如某个服务器程序的配置信息,它 ...

  9. python补充知识点

    1. 在python2中用xrange,在python3中直接使用range就好了 2. 常数 None在逻辑判断的时候指代False,其他方式不代表True或者False 3. for循环只作用域容 ...

  10. python 补充:join() , 基本数据类型的增删改查以及深浅拷贝

    #  join() join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. li = ["李李嘉诚", "麻花藤", "黄海海峰&q ...

随机推荐

  1. TJU Problem 1090 City hall

    注:对于每一横行的数据读取,一定小心不要用int型,而应该是char型或string型. 原题: 1090.   City hall Time Limit: 1.0 Seconds   Memory ...

  2. C++ 备忘录 (1)

    取模: 1. 转载自:http://ceeji.net/blog/mod-in-real/ 背景 最近在一道 Java 习题中,看到这样的一道题: What is the output when th ...

  3. [LeetCode&Python] Problem 766. Toeplitz Matrix

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  4. UIWebView UITextView

    // // ViewController.m // 网页 // #import "ViewController.h" @interface ViewController ()< ...

  5. 国内Ubuntu镜像源

    国内有很多Ubuntu的镜像源,包括阿里的.网易的,还有很多教育网的源,比如:清华源.中科大源. 我们这里以中科大的源为例讲解如何修改Ubuntu 18.04里面默认的源. 编辑/etc/apt/so ...

  6. Codeforces Round #224 (Div. 2) A. Ksenia and Pan Scales

    A. Ksenia and Pan Scales time limit per test 1 second memory limit per test 256 megabytes input stan ...

  7. 51Nod:完美字符串

    约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...

  8. Windows系统清除远程连接记录的方法

    =============================== 1.点击“开始->运行”,在输入框中键入regedit并回车. 在打开的注册表编辑器中, 找到“HKEY_CURRENT_USER ...

  9. 使用animate()完成修改图片src切换图片的动画效果

    如下所示,在动画效果中的回调函数中进行src的修改和动画的切换 $(".TopImg").animate( {opacity:'toggle'}, "slow" ...

  10. filesystems\configfs\configfs.txt 翻译Android下的

    configfs - 用户空间驱动的内核对象配置. Joel Becker <joel.becker@oracle.com>Updated: 31 March 2005Copyright ...