知识回顾——python3中的类和对象
Life is short,we need python
python是一个极其优秀的脚本语言,也是一门面向对象的语言,Python的设计哲学是“优雅”、“明确”、“简单”,想要体验到使用Python的乐趣,学习python中面向对象的用法是必不可少的,本章来回顾一下个人掌握的python中的面向对象知识。
当然,在学习具体的操作之前,我们先来回顾下什么是面向对象。
我个人的理解是:面向对象是一种编程的方法,也是处理事物的一种方式,我们通过对象来处理事物。面向对象把事物的不同问题拆分,建立面向对象的目的不是为了解决事物中的某一步,而是提供了解决某一类问题的方法。
面向对象的程序构建顺序为“从下到上”,在编程中优先写出解决某类问题的方法,再进行总体问题的解决。
类
类(class)是描述相同属性方法的对象的集合,类定义了每个对象共有的属性方法。
一个基本的类定义
class testclass: # 一个简单的类 i = 123 def f(self): return 'hello world' x = testclass() # 实例化类 # 访问类的属性和方法 print('类的属性i为:', x.i) print('类的方法f为:', x.f())
python中的类定义了__init__方法,当实例化时,__init__方法就会被调用。
这里来个栗子,我们定义一个最经典的学生类。
class Student(): def __init__(self, name, scores): self.name = name self.scores = scores # 这里的第二个name与传入参数的名称对应,而self.name为自己定义的名字 #例如:也可以改为self.name = n ,此时上方参数也改为n
传入的参数为name, scores ,而self表示将要创立的实例本身
下面进行实例化,创建一个stu_1和一个stu_2对象实例。并进行调用。
stu_1 = Student('jack',80) # 实例化,创建了stu_1这个对象,且对象中拥有两个实例变量 stu_2 = Student('alice',90) # 创建了stu_2这个对象 print(stu_1.name,stu_2.name) # 调用stu1,2 的名字,这在实例化时已经被存入 print(stu_1.scores,stu_2.scores) # 调用stu1,2 的成绩
运行后可以看到,jack alice 80 90 这几个数被打印出来。
类中也可以定义私有对象属性,这体现了封装的特性。
class Person1: def __init__(self,name): self.name = name # 对象属性 self.__job = 'student' # 私有对象属性,以双下划线开头,无法被外部访问
python类也有继承的特性。
class Person: # 父类 def __init__(self,name,score): self.name = name self.score = score class Student(Person): # 子类,此时继承父类Person def __init__(self, name, score, gender): # 使用super语句初始化父类 super(Student,self).__init__(name, score) self.gender = gender # 子类也拥有了父类的属性
python中的类特别定义了一些专有的方法,这些方法存放在python的函数库中。
类的专有方法 # __init__ : 构造函数,在生成对象时调用 # __del__ : 析构函数,释放对象时使用 # __repr__ : 打印,转换 # __setitem__ : 按照索引赋值 # __getitem__: 按照索引获取值 # __len__: 获得长度 # __cmp__: 比较运算 # __call__: 函数调用 # __add__: 加运算 # __sub__: 减运算 # __mul__: 乘运算 # __truediv__: 除运算 # __mod__: 求余运算 # __pow__: 乘方
# 示例 class Vector: def __init__(self,a,b): self.a = a self.b = b # 表达重载 def __str__(self): return 'Vector(%d,%d)'%(self.a,self.b) # 加法重载 def __add__(self,other): return Vector(self.a + other.a, self.b + other.b) v1 = Vector(2,10) v2 = Vector(5,-2) print(v1 + v2)
运行结果为Vector(7, 8)
(python版本为3.6 , 部分例程参考菜鸟教程)

浙公网安备 33010602011771号