Python面向对象编程

一、面向对象的概念:

    1.1、面向对象是一种编程思想,用这种思想为指导设计的程序,把数据和对数据的操作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能。

    1.2、面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

 二、类的定义(相当于多个函数集合的定义)

(一)、介绍

        1、类(class):用来描述具有相同的属性和方法的对象的集合,定义了共有的属性和方法,对象时类的实例。

        1.1、class关键词后是类名,通常首字母大写,且使用驼峰命名方法。

        1.2、类名后面跟冒号:

        1.3、类中通常包含一个特殊方法:__init__( )。(前后各两个英文下划线

        1.4、类中定义的每一个方法都有一个名为self的参数,该参数必须是方法的第一个参数,self表示当前对象,即指向调用方法的对象。


       2、 方法(method):类中定义的函数。类的方法和普通函数的区别在于类方法必须有一个额外的第一个参数名称self。
       3、 类变量:类变量在整个实例化的对象中时公用的,类变量定义在类中方法体之外,类变量通常不作为实例变量使用。

(二)、实例一:

定义一个矩形类,包含两个数据成员(属性参数):宽度和高度;该类提供两种方法(功能函数):求面积和周长

class Rectangle:                         #定义一个类 Rectangle,最后是 : 标志结束
    def __init__(self,width,height):     #定义初始化方法,三个参数,至少有self一个参数(形参)
        self.width = width               #定义参数变量属性(给实例属性赋值)
        self.height = height
        
    def getArea(self):                 #定义求面积getArea的方法
        S = self.width*self.height
        return S                      #返回S值
    def getPerimeter(self):         #定义求周长getPerimeter的方法
        C = (self.width+self.height)*2
        return C

二、创建类对象(相当于函数的调用) 

基于类创建对象的语法对象名=类名称()

依旧使用矩形类作介绍:

rect = Rectangle(10,20)    #创建类对象rect

a = float(input('请输入矩形的宽a = '))         #从键盘上输入矩形的成员a、b
b = float(input('请输入矩形的高b = '))
rect = Rectangle(a,b)                         #创建类对象rect
print('该矩形的宽a = :',rect.width)          #输出相应的对象成员和方法
print('该矩形的高b = :',rect.height)
print('该矩形的面积S = ',rect.getArea())
print('该矩形的周长C= ',rect.getPerimeter())

运行结果:

三、类的属性

1、实例属性:在定义初始化方法时,内部通过‘self.属性变量名’定义和访问的变量(在外部通过‘对象名.变量名’访问)

     在__init__( )方法中进行初始化,语法为:

           self . 变量名 = 实例属性值

2、类属性:在所有方法之外定义的属性(变量)


四、类的方法(函数)

1、定义:与类相关的函数,包括初始化函数和功能函数(方法)
2、类型:实例方法,类方法,静态方法
3、实例方法:至少包含一个对象参数,在内部通过‘self.方法()’调用,在外部通过‘对象名.方法()’调用


五、类的继承、重写与多态¶

1、继承:子类继承父类的方法
2、重写:子类可以重新编写子类的方法(方法名称相同)
3、多态:子类中方法名称相同但功能不同
4、示例如下:

#父类
class Person():           #定义一个人类
    def __init__(self,name,sex,age):
        self.name = name
        self.sex = sex
        self.age = age
    def studying(self):
        print(self.name,'正在图书馆学习中')
    def show(self):
        print('姓名:{}\n性别:{}\n年龄:{}\n'.format(self.name,self.sex,self.age))

#子类

class Student(Person):          #定义一个Person的子类Student
    def __init__(self,name,sex,age,major):
        super().__init__(name,sex,age)    #用内置函数super()继承父类(调用父类初始化函数)
        '''
        self.name = name
        self.sex = sex
        self.age = age
        '''
        self.major = major
    def show(self):
        Person.show(self)     #在定义非初始化方法里面用父类名称Person.方法()继承父类
        #super().show()    用super()内置方法重写show()不能再有属性self
        print('专业:{}\n'.format(self.major))
        #print('姓名:{}\n性别:{}\n年龄:{}\n专业:{}\n'.format(super().show(self),self.major))
        

#调用类

stu = Student('张三','男',20,'Python程序设计')     #创建类对象
stu.studying()
stu.show()


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值