1.面向对象三大特性,各有什么用处,说说你的理解
封装:根据职责将属性和方法封装在一个抽象类中;
继承:实现代码重复利用
多态:不同子类的对象调用相同的方法,产生不同的结果。增加了代码的灵活性。
2.面向过程编程与面向对象编程的区别?
面向过程:
1.把完成某一个需求的 所有步骤 从头到尾 逐步实现
2.根据开发要求,将某些功能独立的代码封装成一个又一个函数
3.最后完成的代码,就是顺序的调用不同的函数
特点:
1.注重步骤与过程,不注重职责分工
2.如果需求复杂,代码会变得很复杂
3.开发复杂项目,没有固定的套路,开发难度很大
面向对象:
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法
1.在完成某一个需求前,首先确定职责--要做的事(方法)
2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)
3.最后完成代码,就是顺序的让不同的对象调用不同的方法
特点:
1.注重对象和职责,不同的对象承担不同的职责
2.更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供的固定套路
3.需要在面向过程的基础上,再学习一些面向对象的语法
3.python中经典类和新式类的区别?
经典类是不会继承类object的方法的。
写法: class a()
新式类会继承类object的方法。
写法:class a(object)
4.请简单解释Python中 staticmethod(静态方法)和 classmethod(类方法)
静态方法是指既不需要访问实例属性也不调用实例方法,并且不需要访问类属性也不调用类方法。
写法:@staticmethod
def A(cls)
pass
类方法就是针对类对象定义的方法,在类方法内部可以直接访问类属性或者其他类方法。
写法:@classmethod
def A(cls)
pass
5.示例, 现有如下代码, 会输出什么:
class People(object):
__name = "luffy"
__age = 18
p1 = People()
print(p1.__name, p1.__age)
程序将会报错,因为隐藏属性不能直接被访问
6.下面这段代码的输出结果将是什么?请解释。
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print(Parent.x, Child1.x, Child2.x)
Child1.x = 2
print(Parent.x, Child1.x, Child2.x)
Parent.x = 3
print(Parent.x, Child1.x, Child2.x)
答案: (1, 1, 1)
(1, 2, 1)
(3, 2, 3)
注意:这里是对子类或者父类属性作出相应的更改,然后看相应类属性的值变化。
7.“Joker在BMW 4S店买了一俩BMW X7”,根据业务描述,声明相关类
class Car():
def __init__(self,name):
self.name = name
class Store():
pass
class Personal():
def __init__(self,name):
self.name = name
pass
tom = Personal('tom')
bmw x7 = Car('BMW x7')
8.编写程序, A 继承了 B, 俩个类都实现了 handle 方法, 在 A 中的 handle 方法中调用 B 的 handle 方法
class B():
def handle(self):
pass
class A(B):
def handle(self):
B.handle(self)
pass
xx = A()
xx.handle()
9.编写一个学生类,产生一堆学生对象
要求:有一个计数器(属性),统计总共实例了多少个对象
class Student():
count = 0
def __init__(self, name):
self.name = name
Student.count += 1
a = Student('A')
b = Student('B')
c = Student('C')
print Student.count
10.面向对象编程:图书管理系统