__metaclass__ = type
从内建类object直接或者间接地继承
在python3版本中,默认所有的类都是新式类。
__new__
和__init__
的区别
创建一个新实例时调用__new__
,初始化一个实例时用__init__
,这是它们最本质的区别。
new方法会返回所构造的对象,init则不会.
new函数必须以cls作为第一个参数,而init则以self作为其第一个参数.
@property装饰器就是负责把一个方法变成属性调用,通常用在属性的get方法和set方法,通过设置@property可以实现实例成员变量的直接访问,又保留了参数的检查。另外通过设置get方法而不定义set方法可以实现成员变量的只读属性。
*args代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。 **kwargs代表的关键字参数,允许你使用没有事先定义的参数名,另外,位置参数一定要放在关键字参数的前面。
with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。
def extend_list(val, list=[]):
list.append(val)
return list
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')
print(list1) # list1 = [10, 'a']
print(list2) # list2 = [123, []]
print(list3) # list3 = [10, 'a']
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print(Parent.x, Child1.x, Child2.x) # [1,1,1]
Child1.x = 2
print(Parent.x, Child1.x, Child2.x) # [1,2,1]
Partent.x = 3
print(Parent.x, Child1.x, Child2.x) # [3,2,3]
arr = [[1,4,7,10,15], [2,5,8,12,19], [3,6,9,16,22], [10,13,14,17,24], [18,21,23,26,30]]
def getNum(num, data=None):
while data:
if num > data[0][-1]:
del data[0]
print(data)
getNum(num, data=None)
elif num < data[0][-1]:
data = list(zip(*data))
del data[-1]
data = list(zip(*data))
print(data)
getNum(num, data=None)
else:
return True
data.clear()
return False
if __name__ == '__main__':
print(getNum(18, arr))
a = 36
b = 21
def maxCommon(a, b):
while b: a,b = b, a%b
return a
def minCommon(a, b):
c = a*b
while b: a,b = b, a%b
return c//a
if __name__ == '__main__':
print(maxCommon(a,b))
print(minCommon(a,b))
def median(data):
data.sort()
half = len(data) // 2
return (data[half] + data[~half])/2
l = [1,3,4,53,2,46,8,42,82]
if __name__ == '__main__':
print(median(l))
def getOneCount(num):
if num > 0:
count = b_num.count('1')
print(b_num)
return count
elif num < 0:
b_num = bin(~num)
count = 8 - b_num.count('1')
return count
else:
return 8
if __name__ == '__main__':
print(getOneCount(5))
print(getOneCount(-5))
print(getOneCount(0))
更多参考: 关于Python的面试题 https://github.com/taizilongxu/interview_python