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 ...
随机推荐
- laravel 命令行创建controller 创建数据库表迁移 创建module
1.php artisan 查看命令列表 2.php artisan make:controller ArticleController 命令 创建控制器 3.创建数据库迁移表 创建文章表 php a ...
- js基础-数组及数据类型
数组也是引用类型 构造函数创建数组 Object 构造函数类型(所有类型基类) Array 构造函数类型 求幂运算符 ** 2**32-1 数组容量最大 arry.length 如果减小len ...
- 编译模块的Makefile解析
Makefile # if not defined KERNELRELEASE, command is running from command line,need invoke kbuild sys ...
- Java NIO Files
Java NIO Files Files.exists() Files.createDirectory() Files.copy() Overwriting Existing Files Files. ...
- 安装 Java Cryptography Extension (JCE) Unlimited Strength
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html cp ./* /usr/java/ ...
- Push API
[Push API] The Push API gives web applications the ability to receive messages pushed to them from a ...
- ORA-30926: 无法在源表中获得一组稳定的行ORA-06512: 在 "STG.FP_MO_SPLIT", line 1562 临时
- H5 边框:带border的百分比布局
响应式Web设计经常需要我们通过百分比设置组件宽度.如果我们不考虑边框,那么很容易就可以实现,但如果你给每一列以及总宽度都采用百分比设置,那这个时候固定的边框大小就会出来捣乱.下面我们将看到一组方法去 ...
- JAVA去重
JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 ...
- [剑指Offer]快排
快排 看到一篇博文提到"东拆西补"的思想,非常贴切了. 这里采用传统的方法,没有采用剑指Offer书上的方法. 细节很多,需巩固. 其他知识点 生成一个范围内随机数 见代码,这里为 ...