python基础易错题
1.以下代码输入什么:
class Person:
a = 1
def __init__(self):
pass
def getAge(self):
print(__name__)
p = Person()
p.getAge()
结果为:
__main__
2.为了让下面这段代码运行,需要增加哪些代码?
class A(object):
def __init__(self,a,b):
self.__a = a
self.__b = b
def myprint(self):
print('a=', self.__a, 'b=', self.__b) a1=A(10,20)
a1.myprint() a1(80)
答案为:
class A(object):
def __init__(self, a, b):
self.__a = a
self.__b = b
def myprint(self):
print('a=', self.__a, 'b=', self.__b)
def __call__(self, num):
print('call:', num + self.__a)
3.下面这段代码输入什么?
class B(object):
def fn(self):
print('B fn')
def __init__(self):
print("B INIT") class A(object):
def fn(self):
print('A fn') def __new__(cls,a):
print("NEW", a)
if a>10:
return super(A, cls).__new__(cls)
return B() def __init__(self,a):
print("INIT", a) a1 = A(5)
a1.fn()
a2=A(20)
a2.fn()
答案为:
NEW 5
B INIT
B fn
NEW 20
INIT 20
A fn
4.添加代码,使以下程序运行,并返回指定结果
class A(object):
def __init__(self,a,b):
self.a1 = a
self.b1 = b
print('init')
def mydefault(self):
print('default') a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
返回结果:
default
default
default
答案为: 添加__getattr__()魔术方法
class A(object):
def __init__(self,a,b):
self.a1 = a
self.b1 = b
print('init')
def mydefault(self):
print('default')
def __getattr__(self,name):
return self.mydefault a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
扩展:
class A(object):
def __init__(self, a, b):
self.a1 = a
self.b1 = b
print('init') def mydefault(self, *args):
print('default:' + str(args[0])) def __getattr__(self, name):
print("other fn:", name)
return self.mydefault a1 = A(10, 20)
a1.fn1(33)
a1.fn2('hello')
a1.fn3(10)
输出为:
init
other fn: fn1
default:33
other fn: fn2
default:hello
other fn: fn3
default:10
5.一个包里有三个模块,mod1.py, mod2.py, mod3.py,但使用from demopack import *导入模块时,如何保证只有mod1、mod3被导入了。
答案:增加__init__.py文件,并在文件中增加:
__all__ = ['mod1','mod3']
6.写一个函数,接收整数参数n,返回一个函数,函数的功能是把函数的参数和n相乘并把结果返回。
def mulby(num):
def gn(val):
return num * val return gn zw = mulby(7)
print(zw(9));
7.解析下面的代码慢在哪
def strtest1(num):
str='first'
for i in range(num):
str+="X"
return str
答案:python的str是个不可变对象,每次迭代,都会生成新的str对象来存储新的字符串,num越大,创建的str对象越多,内存消耗越大。
8.有如下的一段代码:
class A(object):
def show(self):
print 'base show' class B(A):
def show(self):
print 'derived show' obj = B()
obj.show()
如何调用类A的show方法了。
方法如下:
obj.__class__ = A
obj.show()
__class__方法指向了类对象,只用给他赋值类型A,然后调用方法show,但是用完了记得修改回来。
python基础易错题的更多相关文章
- python基础易错总结
1.python安装配置环境变量 [右键计算机]------->[属性]------->[高级系统设置]------->[高级]------->[环境变量]--------&g ...
- 【笔试题】Java 易错题精选
笔试题 Java 易错题精选 1.写出下列程序的运行结果( )String 不变性Java 值传递 public class Test { public static void main(String ...
- python基础之逻辑题(3)
Python基础之逻辑题(3) 1.编写一个函数实现将IP地址转换成一个整数 2.求结果:---lambda 3.求a的结果 4.求下面nums的输出 5.求下面片段的输出 6.写出程序的结果:--- ...
- python基础之逻辑题(2)
python基础之逻辑题(2) 1.若k为整数,下列while循环执行的次数为? 2.请输出正确结果-----numbers? 3.求结果-----math? 4.求结果-----sum? 5.输 ...
- python基础之逻辑题(1)
python基础之逻辑题(1) 1.用一行代码实现数值交换? 2.求结果--fromkeys? 3.1,2,3,4,5能组成多少个互不相同且无重复的三位数? 4.有两个字符串列表a和b,每个字符串是逗 ...
- 面试题之第一部分(Python基础篇) 80题
第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...
- Java五道输出易错题解析(避免小错误)
收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注意下就OK了. 1. 看不见的空格? 下面的输出会正常吗? package basic; public class Integ ...
- Java五道输出易错题解析(进来挑战下)
转自:http://blog.csdn.net/lanxuezaipiao/article/details/41985243 收集了几个易错的或好玩的Java输出题,分享给大家,以后在编程学习中稍微注 ...
- 杭电OJ2039——三角形(c++)(易错题:数据类型不确定)
三角形 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
随机推荐
- Conscription-最小生成树-Kruskal
Windy has a country, and he wants to build an army to protect his country. He has picked up N girls ...
- Python基础学习Day3 数据类型的转换、int、str、bool、字符串的常用方法、for循环
一.数据类型的转换 常用的是:int 转str.str转int.int转bool 时 非零即为 True . # 数据类型之间转换 ***** # int <--> str str(i ...
- ASP.NET 分页+组合查询 练习
分页和组合查询都是通过拼接SQL语句到数据库查询进行实现 到汽车表(car)中查询 ,汽车表选取了“编号 code”,“车名 name”,“日期 time”,“油耗 oil ”,“马力 powers” ...
- mysql 性能测试工具 mysqlslap
原文链接: https://my.oschina.net/moooofly/blog/152547 连接数据库: # mysqlslap -h localhost -uroot -p123456 -- ...
- Rx操作符
[Rx操作符] 1.Observable.from()方法,它接收一个集合作为输入,然后每次输出一个元素给subscriber: Observable.from("url1", & ...
- Java输入输出流详解2
InputStream/Reader:所有输入流的基类,只能从中读取数据: OutputStream/Writer:所有输出流的基类,只能向其写入数据.
- overflow属性的用法
<style type="text/css">div{ background-color:#00FFFF; width:150px; height:150px; ove ...
- opsmanage 自动化运维管理平台
关闭防火墙.selinux 更换阿里云 yum源 依赖环境 yum install -y epel-releaseyum install vim net-tools nmon htop rsync t ...
- awk技巧 nginx access.log
1.1 介绍 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK ...
- HDU-1257.最少拦截系统(基础DP)
本题大意:给出n和n个整数,让你求出其中不上升子序列的个数. 本题思路:用dp[ i ]保存第i个防御系统攻击的最低的导弹,遍历数组,遇到更低的导弹则更新最小值,否则新加一个系统用来防御,并且更新最小 ...