您的位置:首页 > 编程语言 > Python开发

python面试宝典1

2018-05-09 22:17 218 查看

多态

1. python有多态,但是不是一个严谨的多态,因为Python是一个动态语言,没有强制类型

封装

一个函数一个功能,一个类是多个相关函数的集合

继承

子类中相同的方法会放到父类中,减少代码重复性

mro 及多继承

mro类初始化顺序表,保持我们的类只初始化一次
super()从mro顺序表中找到自已的位置,从mro顺序表中调用下一个类

实例与类之间的调用关系

实例可以调用三种类型的方法(静态,类,实例),可以调用类的属性及自我的属性
类可以调用三种类型的方法(静态,类,实例),但是不能调用实例上的属性

property

1. 完成常量,常量是能得到到数据,但是不能修改数据,一般常量都是大写
2. 代码实现
这个常量一般在init中创建一个私有的属性
提供一个得到这个私有属性的方法,但是我们为了让常量更直观,在方法上加入装饰器@property
调用就可以使用(类名.方法名)
class MyMath(object):
def __init__(self):
self.__PI = "3.1415926"

@property
def PI(self):
return self.__PI
math = MyMath()
print(math.PI)  # 常量这个不能让别人修改的值

魔法属性与方法

__dict__:查看属性
__class__:查看谁创建了我
__call__:实例()调用

__init__:初始化
__new__:创建时,一般单例
上下文管理代码
class MyOpen(object):
def __init__(self, file, mode):  # MyOpen()时调用
# print(file, mode)
f = open(file, mode)
self.f = f

def __enter__(self):  # 返回as 后面的值
return self.f

def __exit__(self, *args):  # 退出关闭
# print("close")
self.f.close()

with MyOpen("./test.txt", "r") as f:
content = f.read()

print(content)
with改造数据库
class MyOpen(object):
def __init__(self, file, mode):  # MyOpen()时调用
# print(file, mode)
f = open(file, mode)
self.f = f

def __enter__(self):  # 返回as 后面的值
return self.f

def __exit__(self, *args):  # 退出关闭
# print("close")
self.f.close()

with MyOpen("./test.txt", "r") as f:
content = f.read()

print(content)

##上下文管理器

只要实现了init ,enter,exit这三个方法就可以说实现了上下文管理器
1.简化了代码
2.程序退出时自动关闭
3.操作时出现异常也会自动关闭

with myopen() as f:
pass
myopen()这个调用init方法
as 后面的f由enter这个方法返回
程序执行完后退出我们会执行exit,一般用来关闭资源


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: