Python基础08

目录

1.Object-Oriented Programming

2.类

2.1类的定义

2.2实例化对象(构造函数)

2.3self

2.4cls

2.5实例变量(也叫属性)

2.6类属性

2.5初始化方法

2.7类方法

2.8静态方法

3.继承

3.1单继承

3.2多继承

3.3覆盖(Override)


1.Object-Oriented Programming

一切皆是对象(实例),用 各对象之间的关系来描述事务。

2.类

拥有相同属性和行为的对象的组成

用来创建对象(实例化)

2.1类的定义

数据成员:变量

方法成员:函数

class 类名(继承列表):

        实例属性(类内的变量) 定义

        实例方法(类内的函数) 定义

        类变量(class variable) 定义

        类方法(@classmethod) 定义

        静态方法(@staticmethod) 定义

2.2实例化对象(构造函数)

变量 = 类名([参数])

说明:

变量存储的是:实例化对象的地址

huaWei=MobilePhone("华为",18888)
iPhone=MobilePhone("苹果",12888)

2.3self

即:实例(对象)本身

类方法的第一个参数,用于引用对象本身

理解:坐高铁、住酒店时使用的身份证。

class Student():
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def sleep(self, ):
        print(self.name, "正在睡觉")

    def study(self, subject):
        print(self.name, "正在学", subject)

2.4cls

cls 是一个约定俗成的名称,用于表示类本身。

cls 作为第一个参数传递给方法。

(1)访问类属性

(2)访问类方法

(3)创建类实例

class MyClass():
    class_attr = 0  # 类属性

    def __init__(self, name):
        self.name = name

    @classmethod
    def modify_class(cls, num):
        cls.class_attr = num
        print("类属性已修改为", cls.class_attr)

2.5实例变量(也叫属性)

定义在实例方法内的属性

  • 首次为属性赋值则创建此属性.

  • 再次为属性赋值则改变属性的绑定关系

class MobilePhone():

    def __init__(self, name, price, phone_number):
        self.name = name
        self.price = price
        self.phone_number.append(phone_number)

2.6类属性

属于类不属于对象

类创建的对象的共有属性

类属性在对象中共用

class Dog():
    name = "旺财"#类属性

    def eat(self):
        print("吃")

    def bark(self):
        print("汪汪")

2.5初始化方法

对新创建的对象添加属性

创建实例后自动调用初始化方法

方法名必须为__init__ 不可改变

class 类名():
    def __init__(self,属性1,属性2,..):

        self.属性1=属性1

class Bank():
    all_price = 100000

    def __init__(self, name):
        self.name = name

2.7类方法

属于类不属于对象

用@classmethod装饰器定义

至少有一个形参cls

class MyClass():
    class_attr = 0  # 类属性

    def __init__(self, name):
        self.name = name

    @classmethod
    def modify_class(cls, num):
        cls.class_attr = num
        print("类属性已修改为", cls.class_attr)

2.8静态方法

静态方法能访问类属性

使用@staticmethod装饰器定义

不需要传入self实例参数和cls类参数

静态方法一般不能访问实例属性,但可以:类名.属性名  进行访问

class Static():
    attr = "Hello Man"
    def __init__(self,name):
        self.name=name

    @staticmethod
    def static_fun():
        print(Static.attr)
        # print(self.name)

static1=Static("A")
static1.static_fun()

3.继承

继承是从已有的类中派生出新的类,新类具有原类的数据属性和行为,并能添加新的数据属性和行为。

3.1单继承

单继承是指派生类由一个基类衍生出来的

class Person():
    def __init__(self, name, money):
        self.name = name
        self.money = money

    def earn_money(self):
        print(self.name, f"挣了{self.money}元")


class Man(Person):
    def __init__(self, name, money):
        Person.__init__(self, name, money)

3.2多继承

即继承多个类

注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

class sample(speaker,student):
    a =''
    def __init__(self,n,a,w,g,t):
        student.__init__(self,n,a,w,g)
        speaker.__init__(self,n,t)

3.3覆盖(Override)

子类中实现了与基类同名的方法,在子类的实例调用该方法时,实际调用的是子类中的覆盖版本

class AttackObject():
    def __init__(self,name):
        self.name=name

    def injured(self):
        pass

class Player2(AttackObject):
    def __init__(self, name):
        AttackObject.__init__(self, name)

    def injured(self):
        print(self.name,"掉血,碎屏")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/895572.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ service is already present - only updating service parameters

Windows下卸载RabbitMQ之后,然后重新注册RabbitMQ服务的时候,报错以下信息: D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin>D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin\rabbitmq-service.bat install RabbitMQ service is already …

动态规划-子数组系列——乘积最大子数组

1.题目解析 题目来源:152.乘积最大子数组——力扣 测试用例 2.算法原理 1.状态表示 由于题目给的数组中可以包含负数,因此求最大乘积有两种情况: a.负数乘以最小数得出最大乘积 b.整数乘以最大数得出最大乘积 所以需要两个表分别求出最大最…

MySQL 数据库迁移至达梦 DM8 常见问题

目录 如何让迁移到 DM 的表名大小写和 MySQL 保持一致 MySQL 迁移到 DM 报错:列[NAMES]长度超出定义 MySQL 迁移到 DM 报错:记录超长 索引错误 DM大小写敏感配置 表空间 新建用户 用户与模式的关系 省略模式名的优势 实际操作 如何让迁移到 DM…

【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:拥塞控制(重点) 1:情境引入 2:解决方案…

【Docker】安装部署项目流程(Pycharm版)

安装部署步骤 1.准备项目 第一步要准备好你所需要部署的项目,确保在工作目录下所以程序.py文件正常调用并能正确运行 如上,main要在工作目录中能跑通,这里有一点需要注意 在IDE src不要标记为源代码根目录,观察一下是否能跑通代…

【计算机网络 - 基础问题】每日 3 题(五十)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

Java最全面试题->Java基础面试题->JavaSE面试题->面向对象面试题

面向对象 下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图 哪里不会点哪里 1.面向对象和面向过程的区别 面向对象: 优点:易维护,复用,扩展。面向对象…

解决DOTA-v2.0数据集上传结果至官网BUG: No space left on device

时间:2024.10.20 一、DOTA-v2.0数据集上传结果至官网BUG: No space left on device IOError at /evaluation1/ [Errno 28] No space left on device二、解决方法,法一 上传的结果文件太大了,把服务器磁盘占满了。 将结果中精度…

【算法】KMP字符串匹配算法

目录 一、暴力 二、KMP 2.1 思路 2.2 next数组 2.3 实现 2.4 例题 一个人能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。 …

elementui时间选择器time-picker返回值不对的问题

1. 问题 天杀的elementui的time-picker,导致我开发的系统出现了一次生产问题,原因竟然是因为组件库的bug!直接上截图。 如图,正常情况下,选择时间后,想要得到的值理应是当天的时间,如图是当年…

zotero文献管理学习

1 zotero软件简介 zotero是一款开源的文献管理软件。如果你听说或使用过EndNote,那么可能会对“文献管理”有一定的概念。可以简单地这样理解:zotero一定程度上可以作为EndNote的平替。 EndNote需要注册付费,对于无专业科研机构隶属关系的企…

使用apipost连接openai的接口进行模型对话

使用apipost连接openai的接口进行模型对话 1.API准备2.APIPOST配置2.1请求地址和header的设置2.2认证API设置2.3body设置2.4结果 1.API准备 这里使用网络上的API,使用硅基流动的 API Key,所以接下来便是注册并获取 API Key 了。 首先,我们打…

轻量级可视化数据分析报表,分组汇总表!

什么是可视化分组汇总表? 可视化分组汇总表,是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度(如时间、地区、产品类型等)对数据进行分组,还能自动计算各组的统计指标&#xf…

RabbitMQ 入门(四)SpringAMQP五种消息类型(Work Queue)

一、WorkQueue(工作消息队列) Work queues,也被称为(Task queues),任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。 当消息处理比较耗时的时候,可能生产消息的速度会远远大于…

官龙村捐赠图书整理有感

今天(2024年10月20日),我有幸参加了在深圳南山区西丽官龙村举行的义工活动,主要任务是整理捐赠的图书,并根据小学和中学的需求进行分类打包。这次活动不仅让我体会到了劳动的辛苦,更让我感受到了助人为乐的…

如何使用Python合并Excel文件中的多个Sheet

在日常工作中,我们经常会遇到需要处理多个Excel工作表(Sheet)的情况。比如,一个Excel文件中包含了一个月内每天的数据,每个工作表代表一天。有时候,为了方便分析,我们需要将这些分散的数据合并到…

【MySQL】详解MySQL数据类型

一、数据类型 各类型的数值范围: 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。对于int类型可能存放不下的数据,尽量不使用unsigned,unsigned int 同样可…

国家信息安全水平考试(NISP一级)最新题库-第十六章

目录 另外免费为大家准备了刷题小程序和docx文档,有需要的可以私信获取 1 防火墙是一种较早使用、实用性很强的网络安全防御技术,以下关于防火墙说法错误的是() A.防火墙阻挡对网络的非法访问和不安全数据的传递;B.防…

强对流降水临近预报

强对流降水是一种最常见的灾害性天气,其突发性和局地性强、生命史短、灾害重等特点极易给人民生产和生活带来巨大的破坏和伤害。如果可以提前预知此类天气状态,则可以挽回巨大的生命财产损失,尤其是短时(0~12小时)和临…

基础篇:带你打开Vue的大门(二)

目录 学习目标: 核心技能目标 学习内容: 学习产出: 学习目标: 能够创建Vue实例并理解其基本选项。 理解el、data、methods等选项的作用。 掌握数据绑定: 理解单向数据绑定和双向数据绑定的区别。能够使用v-bind和…