专栏名称: 程序员大咖
为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。
目录
相关文章推荐
OSC开源社区  ·  OpenAI用Rust重写AI编程工具Cod ... ·  4 天前  
京东科技技术说  ·  JDK从8升级到21的问题集 ·  昨天  
稀土掘金技术社区  ·  我在 pre 直接修改 bug,被领导批评了 ·  昨天  
51好读  ›  专栏  ›  程序员大咖

10个Python面试常问的问题

程序员大咖  · 公众号  · 程序员  · 2018-03-12 10:24

正文

请到「今天看啥」查看全文


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、 new和init


下面这段代码输出什么?

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

使用__new__方法,可以决定返回那个对象,也就是创建对象之前,这个可以用于设计模式的单例、工厂模式。__init__是创建对象是调用的。

4、 Python list和dict生成


下面这段代码输出什么?

ls = [1,2,3,4]
list1 = [i for i in ls if i>2]
print list1

list2 = [i*2 for i in ls if i>2]
print list2

dic1 = {x: x**2






请到「今天看啥」查看全文