目录
5、说出类方法和静态方法的区别?分别实现一个类方法和静态方法实例
15、给定一些NxN的矩阵,对于任意的路线,定义其【和】为其线路上所有节点的数字的和,计算从左上角到右下角的路线和最小值。每条路线只能从某一点到其周 围(上下左右)的点,不可斜行。
16、有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;
1、类和对象的概念和关系是什么?
类(Class):是具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
对象:通过类定义的数据结构实例。
类和对象的关系:对象是类的实例。类的实例化结果就是对象,而对一类对象的抽象就是类。通俗的说:类相当于一个模板,对象是由模板产生的样本
类和对象的区别:
1.类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。
2.对象是类的一个具体表现。它是一个实实在在存在的东西。
2、什么样的代码才是面向对象?
如果程序中的所有功能都是用类和对象来实现,那么就是面向对象编程了
3、类的构造方法与成员方法之间有什么区别?
- 成员方法的函数名可以自定义,但构造方法的函数名是固定的__init__
- 成员方法需要被手动调用,但构造方法在创建对象的过程中自动被调用
- 成员方法由创建好的对象调用,可以被调用多次,但是,创建一个对象时,构造方法只被调用一次
4、self关键词的作用是什么?
self表示的就是实例本身,它用于在类实例方法中引用方法所绑定的实例。当你使用实例调用方法时,由解释器自动将实例传递给方法的self参数,所以我们不需要自己传递self参数
5、说出类方法和静态方法的区别?分别实现一个类方法和静态方法实例
类方法:由类调用(对象也可调用);至少一个cls参数(可以不叫cls,指向该类本身);方法上有装饰器@classmethod;不能调用实例变量
静态方法:由类调用(对象也可调用);无默认参数,方法上有装饰器@staticmethod;不能调用实例变量
class P:
def __init__(self,name):
self.name=name
@classmethod
def print_sth(cls): #类方法,类方法中不能用实例变量
# print(self.name)
print("class method is inworked!")
print(cls.__name__)
@staticmethod
def print_p(): #静态方法,可以有参数也可以没有,不能使用实例变量
# print(self.name)
print("static method is inworked!")
a=P("tester")
a.print_sth()# 通过实例名调用类方法
P.print_sth()# 通过类名调用类方法
a.print_p()# 通过实例名调用静态方法
P.print_p()# 通过类名调用静态方法
6、什么是数据封装与隐藏?
封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法
7、什么是方法重写,方法重写的规则是什么?
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
重写父类的方法有两种情况:
1.覆盖父类的方法
2.扩展父类的方法
8、编写程序片段,定义表示课程的类Course。课程的属性包括课程名、编号、选修课号;方法包括设置课程名、设置编号、设置选修课号以及获取课程名、获取编号、获取选修课程号,然后打印输出该对象的课程名、编号以 及选修课号。
class Course:
def __init__(self,name,id,num):
self.__course_name = name
self.__course_id = id
self.__course_num = num
def get_course_name(self):
return self.__course_name
def set_course_name(self,name):
self.__course_name = name
def get_course_id(self):
return self.__course_id
def set_course_id(self,id):
self.__course_id = id
def get_course_num(self):
return self.__course_num
def set_course_num(self,num):
self.__course_num = num
c1 = Course("English",1,"10001")
print("course_name:",c1.get_course_name())
print("course_id:",c1.get_course_id())
print("course_num:",c1.get_course_num())
print("修改的课程信息:")
c1.set_course_name("Math") # 修改课程名
print("course_