零基础入门学习Python(34) 面向对象

本文详细介绍了Python中的面向对象编程概念,包括类和对象的关系、类的属性(如颜色、重量等)和方法(如爬行、奔跑等)。通过实例展示了如何创建和使用对象,以及面向对象的三大特征——封装、继承和多态。同时,通过具体的例子解释了如何定义Person类和Rectangle类,并创建实例。面向对象编程强调数据的安全性(封装)、代码的复用(继承)和灵活性(多态)。
摘要由CSDN通过智能技术生成

什么是类

  • 对象是模拟真实世界,把数据和代码都封装在一起
  • 类 = 属性 + 方法
    一个对象的特征称为“属性”,一个对象的行为称为“方法”
class Turtle:
    #Python中的类名约定以大写字母开头
    #特征的描述称为属性,在代码层面来看其实就是变量
    color = 'green'
    weight = '10'
    legs = '4'
    shell = True
    mouth = '大嘴'

    #方法实际就是函数,通过调用这些函数来完成某些工作
    def climb(self):
        print('我正在很努力的向前爬...')

    def run(self):
        print('我正在飞快的向前跑...')
    def bite(self):
        print('咬死你咬死你!!!')
    def eat(self):
        print('有的吃,真满足...')
    def sleep(self):
        print('困了,睡了,晚安。。。')

  • 是一个对象的属性加方法,需要使用类来创建一个真正的对象,这个对象就称为这个类的一个实例,也叫实例对象

创建一个对象

  • 创建一个对象,也叫类的实例化
  • 类名后面跟着小括号,与调用函数是一样的,所以在Python中,类名约定用大写字母开头,函数用小写字母开头,这样更容易区分
  • 赋值的操作并不是必须的,但如果没有把创建好的实例对象赋值给一个变量,那么这个对象就没有办法使用,因为没有任何引用指向这个实例,最终会被Python的垃圾回收机制自动回收
  • 调用对象的方法用.即可
>>> tt = Turtle()#生成一个对象,与调用函数相同,用首字母大写与函数区分开来
>>> Turtle()#直接调用,没有后文引用,会被垃圾回收机制回收
>>> tt.climb()#调用方法

OO(Object Oriented)的特征

  • OOP = Object Oriented Program,面向对象编程
  • Python就是一种面向对象编程的语言,所以说Python无处不对象

特征1:封装

封装是一种信息隐蔽技术,使得数据更加安全
Python的列表其实就是一个对象,它提供了若干种方法供我们根据需求来调整整个列表,但是列表方法是如何实现的呢?我们并不知道,我们也知道列表对象有哪些变量,这就是所谓的封装,我们只需要知道方法名字,然后调用它实现自己需要的功能即可,具体如何实现我们并不知道

>>> list1 = [2,1,7,5,3]
>>> list1.sort()
>>> list1
[1, 2, 3, 5, 7]
>>> list1.append(9)
>>> list1
[1, 2, 3, 5, 7, 9]

特征2:继承

  • 继承是子类自动共享父类之间数据和方法的机制
>>> class Mylist(list):#希望继承list这个列表
	pass#占位符,不做任何事情

>>> list2 = Mylist()#把类实例化,生成一个对象,并把对象赋值给变量
>>> list2.append(2)
>>> list2.append(3)#拥有了list.append这个方法
>>> list2.append(7)
>>> list2.sort()
>>> list2
[2, 3, 7]

特征3:多态

  • 不同对象对同一方法响应不同的行动
>>> class A:
	def fun(self):
		print('我是小A')

		
>>> class B:
	def fun(self):
		print('我是小B')

		
>>> a = A()
>>> b = B()
>>> a.fun()
我是小A
>>> b.fun()
我是小B

在这里,大家都调用一个叫fun的方法函数,名字一样的 但是实现不一样

Task

0. 对象中的属性和方法,在编程中实际是什么?
变量和函数
1. 类和对象是什么关系呢?
类和对象的关系就如同模具和用这个模具制作出的物品之间的关系。一个类为它的全部对象给出了一个统一的定义,而他的每个对象则是符合这种定义的一个实体,因此类和对象的关系就是抽象和具体的关系
2. 如果我们定义了一个猫类,那你能想象出由“猫”类实例化的对象有哪些?
波斯猫、Kitty
3. 类的定义有些时候或许不那么“拟物”,有时候会抽象一些,例如我们定义一个矩形类,那你会为此添加哪些属性和方法呢?
属性:边长
方法:面积,周长
4. 类的属性定义应该尽可能抽象还是尽可能具体?
尽可能抽象,更符合面向对象的思维
5. 请用一句话概括面向对象的几个特征?
封装 :对外部隐藏对象的工作细节
继承 :子类自动共享父类之间数据和方法的机制
多态:可以对不同类的对象调用相同的方法,产生不同的结果
6. 函数和方法有什么区别?
方法和函数几乎完全一样,但方法默认有一个self参数
7.按照以下提示尝试定义一个 Person 类并生成类实例对象。
属性:姓名(默认姓名为“小甲鱼”)
方法:打印姓名
提示:方法中对属性的引用形式需加上 self,如 self.name

class Person:
    name = '小甲鱼'

    def printName(self):
        print(self.name)

8.按照以下提示尝试定义一个矩形类并生成类实例对象。
属性:长和宽
方法:设置长和宽 -> setRect(self),获得长和宽 -> getRect(self),获得面积 -> getArea(self)
提示:方法中对属性的引用形式需加上 self,如 self.width’
在这里插入图片描述

class Rectangle():
    width = 4.00
    length = 5.00

    def getRect(self):
        print('这个矩形的长是:%.2f,宽是:%.2f'%(self.length,self.width))
    def setRect(self):
        print('请输入矩形的长和宽...')
        length = float(input('长:'))
        width = float(input('宽:'))
    def getArea(self):
        print(self.length * self.width)
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值