python每日学习6:面向对象的定义和类的使用以及参考代码
-
面向对象的概念
-
面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
-
在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。
-
向对象的设计思想是抽象出Class(类),根据Class创建Instance(实例)。
-
面向对象主要有三大特点:封装、继承和多态。
-
专业术语介绍:
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 方法:类中定义的函数。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对象。
- 实例化:创建一个类的实例,类的具体对象。
- 对象:通过类定义的数据结构实例,包括两个数据成员(类变量和实例变量)和方法。
-
-
类的使用
-
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同 。
-
类的格式
- 用class 类名即可以创建一个类,类名通常是大写开头的单词
- 通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去
- __init__前后分别有两个下划线__init__方法的第一个参数永远是self,表示创建的实例本身
-
class Student: def __init__(self, n, s): # self 类中的变量 全类可用 # 类中的属性 self.name = n self.score=s
-
-
相关类的参考代码
-
class Student: # 构造方法 在类被定义的使用就会使用 def __init__(self, n, s): # self 类中的变量 全类可用 # 类中的属性 self.name = n # 私有变量 可以在类的内部去处理 安全一点 不能在外部直接去修改这个值 self.score = s # 用一个下划线 大家就会认为你是一个私有变量 (常量) self._sco = 1 # print(self.eye) # self.print_sco() # 私有方法 def __a(self): print("1") def set_score(self,new_score): self.score = new_score def get_score(self): return self.score # 类中的方法 def print_sco(self): self.__a() print(f"{self.name}的成绩是{self.score}") def get_grade(self): if self.score>90: print("A") else: print("B") if __name__ == '__main__': # 对象是类的实例 类是对象的抽象 # 实例化一个类 ls = Student("ls", 90) ls.print_sco() ww = Student("ww", 88) ww.print_sco() # print_sco(ls) ls.get_grade() # 通过类的变量直接去修改变量值 # ls.__score = 99 # print(ls.__score) # 通过我给的方法去修改 ls.set_score(100) print(ls.get_score()) print(ls.score)