长沙做网站咨询公司,注册公司的步骤和流程,wordpress首页显示标签,wordpress 维护代码类#xff08;class#xff09;
一、面向对象概念 1、面向对象是一种编程思想和技术#xff0c;它是一种将程序设计问题分解成对象的方式。每个对象都有自己的状态#xff08;数据#xff09;和行为#xff08;方法#xff09;#xff0c;并且可以通过相互之间…类class
一、面向对象概念 1、面向对象是一种编程思想和技术它是一种将程序设计问题分解成对象的方式。每个对象都有自己的状态数据和行为方法并且可以通过相互之间的交互来解决问题。面向对象程序设计的核心概念包括封装、继承和多态。 2、封装是指将数据和对数据操作的方法封装在一个对象中使得数据的实现细节对外部是不可见的从而提高了代码的安全性和复用性。 3、继承是指通过创建新的类来继承已有类的属性和方法从而实现代码的重用和扩展。 4、多态是指同一个方法可以具有不同的行为根据实际的对象类型来调用不同的方法。 5、面向对象编程可以将复杂的问题分解成多个相互独立的对象通过对象之间的交互来解决问题使得代码的可读性和可维护性更强同时也提高了代码的复用性和扩展性。 6、面向对象的程序设计把计算机程序视为一组对象的集合而每个对象都可以接收其他对象发过来的消息并处理这些消息计算机程序的执行就是一系列消息在各个对象之间传递 7、而面向过程的程序设计是把计算机程序视为一系列的命令集合即一组函数的顺序执行为了简化程序设计面向过程把函数继续切分为子函数即把大块函数通过切割成小块函数来降低系统的复杂度 8、在Python中所有数据类型都可以视为对象当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类Class的概念 二、怎么创建一个类 首先假设要处理Student 学生的成绩表为了表示一个学生的成绩面向过程的程序可以用一个dict表示 st u 1 { name: Jack , score: 9 9 } st u 2 { name: Bob, score: 8 8 } 而处理学生成绩可以通过函数实现比如打印学生的成绩 def print_score(stu): #定义一个用法print_score(stu),属性为stuprint(f{stu[name]}:{stu[score]}) #打印传入stu的stu1和stu2的键对应的值if __name__ __main__:stu1{name:Jack,score:99} #定义学生姓名和分数stu2{name:Tom,score:80} print_score(stu1) #将数据传入上面的用法中去print_score(stu2)pass 其输出结果为 即首先定义一个行为方法def print_score(stu)在方法下面赋予这个方法名称的行为或者说方法再在下面输入信息将信息传给方法的参数stu就可以直接打印方法的结果了。 但是如果采用面向对象的程序设计思想首选思考的不是程序的执行流程而是Studentstu1和stu2这种数据类型应该被视为一个对象这个对象拥有name和score这两个属性Property如果要打印学生的成绩首先必须创建出这个学生对应的对象然后给对象发一个print_score消息让对象自己把自己的数据打印出来。 我们可以这样写 先定义一个类class Student: 用于打印学生的姓名和分数然后在类中写入方法最后再针对这个对象打印出需要的内容。具体代码流程如下 class Student:def __init__(self,name,score): #这是一个特殊的方法叫做构造方法它在创建一个对象时被调用用来初始化对象的属性self.namename #用于给对象的属性赋值的语句self.scorescore #self是一个特殊的参数代表对象本身可以用来访问对象的属性和方法。def print_score(self): #print_score是一个方法函数被定义在 Student 类中print(%s:%s % (self.name,self.score)) #print_score 方法接受一个参数 self代表对象本身。这个方法被定义在 Student 类中因此当使用一个 Student 对象调用 print_score 方法时这个对象会作为 self 参数自动传入if __name__ __main__:#实例化一个类stu1Student(Jack,90) #传入类中属性的数据stu2Student(Tom,88)stu1.print_score() #调用 print_score()方法stu2.print_score()pass 给对象发消息实际上就是调用对象对应的关联函数称之为对象的方法Method。面向对象的程序写出来就像这样 三、类的定义格式 四、私有变量 在 Python 中私有变量并不是真正的私有只是通过一种命名约定来实现的。Python 在定义私有变量时会将变量名重命名为 _类名__变量名 的形式以使其在类外部更难被访问。但是仍然可以通过 _类名__变量名 的方式从类外部访问和修改私有变量。 例如定义一个Animal类初始化属性为n和s再定义一些类的方法其中__a 为私有函数其作用是打印1,但是如果想打印这里面的内容在外部调用不了只能在类内部调用这个私有方法然后调用这个方法去打印私有方法内容。没有强行调用私有方法的情况下 class Animal(object):def __init__(self,n,s):self.namenself.__scores #__score为私有变量外部通常不可以直接调用但是可以强行self._sco1 #一般以这种方式写被公认为是私有变量外部也可以直接读取但是不要去修改因为这是不道德的def __a(self): #私有方法通常只能在类的内部使用不能在实例化中直接调用如果想打印其内的用法需要在类内部调用这个私有方法去使用print(123)print(%s:%s%(self.name,self.__score))def scoe_1(self):self.__a() #调用私有函数print(hello hello)def get_score(self):if self.__score90: #使用了Animal类内部函数的属性值print(f{self.name}:A级)else:print(f{self.name}:B级)
if __name__ __main__:lsAnimal(xioamei,99) #给类传属性的数据ls.scoe_1() #调用sco_1方法sco_1会调用内部的私有函数ls.get_score() 如果在外部直接调用私有方法去使用会出现以下错误 五、总结 1、面向对象的设计思想是从自然界中来的因为在自然界中类Class和实例Instance的概念是很自然的 2、Class是一种抽象概念而实例Instance则是一个个具体的Student比如定义的Class——Student是指学生这个概念Bart Simpson和Lisa Simpson是两个具体的Student 3、所以面向对象的设计思想是抽象出Class根据Class创建Instance 4、面向对象的抽象程度又比函数要高因为一个Class既包含数据又包含操作数据的方法 5、面向对象主要有三大特点封装、继承和多态 六、专业术语介绍 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 方法类中定义的函数 类变量类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员类变量或者实例变量用于处理类及其实例对象的相关的数据 方法重写如果从父类继承的方法不能满足子类的需求可以对其进行改写这个过程叫方法的覆盖override也称为方法的重写 局部变量定义在方法中的变量只作用于当前实例的类 实例变量在类的声明中属性是用变量来表示的这种变量就称为实例变量实例变量就是一个用 self 修饰的变量。 继承即一个派生类derived class继承基类base class的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待 实例化创建一个类的实例类的具体对象 对象通过类定义的数据结构实例包括两个数据成员(类变量和实例变量)和方法