当前位置: 首页 > news >正文

python基础:(七)类

目录

      • 一.创建和使用类
      • 二.使用类和实例
        • 2.1给属性指定默认值
        • 2.2修改属性的值
          • 2.2.1直接修改属性的值
          • 2.2.2通过方法修改属性的值
          • 2.2.3通过方法对属性的值进行递增
      • 三.继承
        • 3.1子类的方法__init__()
        • 3.2给子类定义属性和方法
        • 3.3重写父类的方法
      • 四.导入类
        • 4.1语法--1:
        • 4.2语法--2

前言

       python是一门优秀的面向对象编程语言。面向对象编程语言的编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。
       根据类来创建的对象称为实例化。

一.创建和使用类

类就用一个例子来进行讲解,讲解以注释的形式添加到代码中。

class Person: #关键词class 定义了一个类,类名是Persson,根据python约定,首字母大写的名称指的是类。"""描述人的行为信息""" #文档字符串注释,描述这个类def __init__(self,name,age): #__init__()是一个特殊方法,有三个形参值,并且self必不可少,并且必须放在最前面"""初始化属性name和age"""self.name = name #self.name 和self.age都有前缀self以self为前缀的变量可以在类中的所有方法使用(就是def xxxx使用这个变量,但是必须加前缀self)self.age = age #self.name和self.age 也称作属性,属性就是通过实例访问的变量def walk(self): #定义另一个方法,走路,"""模拟模特收到命令时走路"""print(f"{self.name} is now walking!")"""下面是使用类"""
person = Person('Mayahei',20) #python创建人的一个实例,并将这个实例赋值给变量person
print(person.name) #person此时是一个实例,我们可以通过句点法,(就是.)来访问属性
print(person.age) #同person.name"""下面是调用类的方法,也就是def xxxx"""
person.walk() #通过实例person调用方法walk(walk就是打印模特正在走路)

运行结果
在这里插入图片描述

二.使用类和实例

2.1给属性指定默认值

就是直接在属性那调用赋值语句即可。

class Person:"""描述人的行为信息"""def __init__(self,name,age):"""初始化属性name和age"""self.name = nameself.age = ageself.height = '100cm' #给属性指定默认值def walk(self):"""模拟模特收到命令时走路"""print(f"{self.name} is now walking!")def print_height(self):"""打印模特的身高"""print(f"模特的身高为:{self.height}")"""下面是使用类"""
person = Person('Mayahei',20)"""下面是调用类的方法,也就是def xxxx"""
person.print_height() #调用print_height方法打印模特身高

运行结果:
在这里插入图片描述

2.2修改属性的值

修改属性值一共有三种方法,下面进行一一讲解。

2.2.1直接修改属性的值

直接修改属性值也就是赋值语句的应用,把实例和属性通过句点连接起来即可。
实例.属性值
以本文中的例子。

person.height = '200cm' #指定的默认值为100,通过修改变为200,进而通过方法打印出来。
class Person:"""描述人的行为信息"""def __init__(self,name,age):"""初始化属性name和age"""self.name = nameself.age = ageself.height = '100cm' #给属性指定默认值def walk(self):"""模拟模特收到命令时走路"""print(f"{self.name} is now walking!")def print_height(self):"""打印模特的身高"""print(f"模特的身高为:{self.height}")"""下面是使用类"""
person = Person('Mayahei',20)"""下面是调用类的方法,也就是def xxxx"""
person.height = '200cm' #指定的默认值为100,通过修改变为200,进而通过方法打印出来。
person.print_height() #调用print_height方法打印模特身高

运行结果:
在这里插入图片描述

2.2.2通过方法修改属性的值

这个方法的本质呢还是赋值语句,不过赋值语句封装在方法中,看下例:

    def update_height(self,value):#define了一个新的方法,作用就是更新属性值"""更新属性值"""self.height = value
class Person:"""描述人的行为信息"""def __init__(self,name,age):"""初始化属性name和age"""self.name = nameself.age = ageself.height = '100cm' #给属性指定默认值def print_height(self):"""打印模特的身高"""print(f"模特的身高为:{self.height}")def update_height(self,value):#define了一个新的方法,作用就是更新属性值"""更新属性值"""self.height = value"""下面是使用类"""
person = Person('Mayahei',20)"""下面是调用类的方法,也就是def xxxx"""
person.update_height('300cm') #调用更新属性值的方法,
person.print_height() #调用print_height方法打印模特身高

运行结果:
在这里插入图片描述

2.2.3通过方法对属性的值进行递增

这个其实就是通过方法修改属性值的一个延伸,也就是定义方法中的xxx+=number的应用。

    def update_height(self,value):#define了一个新的方法,作用就是更新属性值"""更新属性值"""self.height += value #xxx+=number
class Person:"""描述人的行为信息"""def __init__(self,name,age):"""初始化属性name和age"""self.name = nameself.age = ageself.height = 100 #给属性指定默认值def print_height(self):"""打印模特的身高"""print(f"模特的身高为:{self.height}cm")def update_height(self,value):#define了一个新的方法,作用就是更新属性值"""更新属性值"""self.height += value"""下面是使用类"""
person = Person('Mayahei',20)"""下面是调用类的方法,也就是def xxxx"""
person.update_height(300) #调用更新属性值的方法,
person.print_height() #调用print_height方法打印模特身高

运行结果:
在这里插入图片描述

三.继承

       有前端基础的同学对这个继承应该没什么难以理解的,不过大家可以仔细看,多看多敲代码没什么难的。
       编写类时,不需要重新定义,可以在已有类的基础上添加属性和方法。

3.1子类的方法__init__()
  • 父类和子类必须在同一个.py文件中
  • 父类必须在子类的前面
  • 定义子类时必须在括号内写入父类的名称
  • 子类方法__init__()接受父类实例所需的信息
  • 调用super()函数,进而使用父类中的方法

代码的注释中一一标明:

class Person: #父类"""描述人的行为信息"""def __init__(self,name,age):"""初始化属性name和age"""self.name = nameself.age = ageself.height = 100def print_height(self):"""打印模特的身高"""print(f"模特的身高为:{self.height}cm")class New_Person(Person): #子类,定义子类时必须在括号内写入父类的名称----Person"""定义一个Person子类,打印体重"""def __init__(self,name,age): #子类方法__init__()接受父类实例所需的信息super().__init__(name,age) #调用super()函数,进而使用父类中的方法"""下面是使用类"""
new_person = New_Person('Mayahei',20)
print(f"模特的名字是:{new_person.name}")"""下面是调用类的方法,也就是def xxxx"""
new_person.print_height() #调用父类中的方法:print_height方法打印模特身高(子类中没有这个方法)

运行结果:
在这里插入图片描述

3.2给子类定义属性和方法

也就是赋值语句的应用:

		"""给子类定义属性"""self.weight = 100 #给属性指定默认值,
  """给子类定义方法"""def print_weight(self): #新建新的方法"""打印体重"""print(f"模特的体重为:{self.weight}kg!")
class Person: #父类"""描述人的行为信息"""def __init__(self,name,age):"""初始化属性name和age"""self.name = nameself.age = ageself.height = 100def print_height(self):"""打印模特的身高"""print(f"模特的身高为:{self.height}cm")class New_Person(Person):"""定义一个Person子类,打印体重"""def __init__(self,name,age):super().__init__(name,age)"""给子类定义属性"""self.weight = 100 #给属性指定默认值"""给子类定义方法"""def print_weight(self): #新建新的方法"""打印体重"""print(f"模特的体重为:{self.weight}kg!")"""下面是使用类"""
new_person = New_Person('Mayahei',20)"""下面是调用类的方法,也就是def xxxx"""
new_person.print_weight() #调用子类中的方法:print_weight方法打印模特体重

运行结果:
在这里插入图片描述

3.3重写父类的方法
就是一个优先级的问题,在子类中创建一个和父类一样的方法,调用这个方法是,调用的是子类的方法。

在这里插入图片描述
运行结果:
在这里插入图片描述

四.导入类

可以类比导入函数学习。

首先定义一个模块,里面专门存放类,如下图所示:
在这里插入图片描述

4.1语法–1:
from 模块名 import 类名

以我的为例:

  1. 导入单个类:
from class_0 import New_Person
  1. 导入多个类:
from class_0 import New_Person, Person
  1. 导入所有类:
from class_0 import *
4.2语法–2

语法:

import 模块名 
#然后使用句点法调用方法

eg:

在这里插入图片描述

import class_0
"""下面是使用类"""
new_person = class_0.New_Person('Mayahei',20)
new_person.print_height()

运行结果:
在这里插入图片描述

ps:如果需要使用别名在导入末尾加上as就行
eg:

from class_0 import New_Person as np

http://www.mrgr.cn/news/79796.html

相关文章:

  • 二分查找题目:在 D 天内送达包裹的能力
  • 设计模式之原型模式:深入浅出讲解对象克隆
  • 【过滤器】.NET开源 ORM 框架 SqlSugar 系列
  • CSS元素宽高特点、类型转化、显式和隐藏(display)
  • 【k8s源码】kubernetes-1.22.3\staging 目录作用
  • 基于PHP课堂签到系统的设计与实现
  • 基础暴力算法
  • C语言(指针练习)
  • MongoDB-ObjectID 生成器
  • python基础:(八)文件
  • 【html css选择器 五种方法,一篇看会】
  • R语言的数据结构-矩阵
  • Vmware workstation17.6虚拟机安装Ubuntu20.04 详细 完美 操作教程(图文并茂)
  • Scala的trait
  • 【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记
  • Scala的隐式转换
  • 服务器---centos上前端从0到1配置项目部署
  • 优秀前端文章笔记----持续更新
  • Hash、HASHTABLE底层原理【Redis对象篇】
  • 杨振宁大学物理视频中黄色的字,c#写程序去掉
  • MySQL-DQL之数据多表操作
  • [Web]域对象
  • Ubuntu压缩打包解压
  • 【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)
  • 软错误防护技术在车规MCU中应用
  • PDF处理的创新工具:福昕低代码平台尝鲜实现PDF2word功能