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

python——第十六天

面向对象——继承

 

class RichMan(object):

 

    def __init__(self):

        self.money = 1000000000

        self.company = "阿里巴巴"

        self.__secretary = "小蜜"

 

    def speak(self):

        print(f"我对钱不感兴趣,我最后悔的事,就是创建了{self.company}")

 

    def __self_info(self):

        print("我有些私密的事,不想让别人")

 

class Son(RichMan):

 

    # pass

 

    # def __init__(self, name, age):

    #     self.name = name

    #     self.age = age

 

    def tell(self):

        print("我是一个富二代")

 

    def speak(self):

        print("各位叔叔伯伯,请多多关照")

 

 

if __name__ == '__main__':

    # s = Son("张三", 16)

    # print(s.name)

    # print(s.age)

    # print(s.money)

    # print(s.company)

    # s.speak()

    # s.__self_info()

 

    s = Son()

    s.speak()

面向对象的特征——封装


class User(object):

    def __init__(self, name, age, password, nickname):
        # 将属性私有化
        self.__name = name
        self.age = age
        self.password = password
        self.nickname = nickname

    def login(self, name, password):
        if name == self.__name and password == self.password:
            print("登录成功")
            self.__show_info()
        else:
            print("登录失败")
            self.__show_info()

    def __show_info(self):
        # 该方法是私有化方法,所以只能在该类内部,外界访问访问
        print(f"我的名字叫做{self.__name}\n,我的年龄是{self.age}")

    def get_name(self):
        return self.__name

    def set_name(self, name):
        self.__name = name

    # 使用property全局函数,二次封装name属性!!!
    name = property(get_name, set_name)


if __name__ == '__main__':
    u1 = User("张三", 16, "123456", "法外狂徒")
    # print(dir(u1))
    # print(u1.__name)
    # u1.__name = "liujianhong"
    # u1.login("liujianhong", "123456")
    # print(u1.__name)
    # print(u1.get_name())
    # u1.set_name("liujianhong")
    # print(u1.get_name())
    # u1.login("liujianhongafdas", "123456")
    # u1.__show_info()

    print(u1.name)
    u1.name = "李四"
    print(u1.name)
    print(u1.get_name())
面向对象——封装的其他写法


class User(object):

    def __init__(self, name, age, password, nickname):
        # 将属性私有化
        self.__name = name
        self.age = age
        self.password = password
        self.nickname = nickname

    def login(self, name, password):
        if name == self.__name and password == self.password:
            print("登录成功")
            self.__show_info()
        else:
            print("登录失败")
            self.__show_info()

    def __show_info(self):
        # 该方法是私有化方法,所以只能在该类内部,外界访问访问
        print(f"我的名字叫做{self.__name}\n,我的年龄是{self.age}")

    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, name):
        self.__name = name


if __name__ == '__main__':
    u1 = User("张三", 16, "123456", "法外狂徒")
    # print(dir(u1))
    # print(u1.__name)
    # u1.__name = "liujianhong"
    # u1.login("liujianhong", "123456")
    # print(u1.__name)
    # print(u1.get_name())
    # u1.set_name("liujianhong")
    # print(u1.get_name())
    # u1.login("liujianhongafdas", "123456")
    # u1.__show_info()

    print(u1.name)
    u1.name = "李四"
    print(u1.name)
 面向对象的特性及相关知识

面向对象的三大特征:

 |--封装

 |--继承

 |--多态

封装:

 在面向对象中,封装往往有两层含义:

  1、类会将类成员封装在类内部

  2、类的属性,私有化,不让外界访问,如果外界需要访问,则提供对于的公开的方法或方式

python如何私有化属性或者方法:

 1、正常命名的属性或者方法

  name 

  age

  speak()

 2、双下划线的属性或者方法(魔法属性或者方法 double line methon/attribute)

  _doc_

  _int_()

  _eq_

  _init_()

 3、前面加一个下划线的属性或者方法

  _name

  _age

  _nickname

  这样定义的无法使用 from xxx import* 这种导入方式导入到其他模块中

 4、封装

  __属性名称或者方法名称

class User(object):

    def __init__(self,name,age,password,nickname) :

        #将属性私有化#

        self.__name=name

        self.age=age

        self.password=password

        self.nickname=nickname

    def login(self,name,password):

        if name==self.__name and password==self.password:

            print("登录成功") 

            self.__show_info()

        else:

            print("登录失败") 

            self.__show_info()

    def __show_info(self):

        #该方法是私有化方法,所以只能在该类内部,外界无法访问

        print(f"我的名字叫做{self.__name}\n,我的年龄是{self.age}")

    def get_name(self):

        return self.__name

    def set_name(self,name):

        self.__name=name

if __name__=='__main__':

    u1=User("zhangsan",16,"123456","法外")

    print(u1.get_name())

    u1.set_name("hjt")

    print(u1.get_name())

    u1.login("hjt","123456")

继承:

 在面向对象中,存在了类继承类的特征,这个就是我们说的——继承

 父类:被继承的类,被称为父类,也被称为超类(super class)

 子类:继承父类的类,被称为子类

方法重写、方法覆盖(override、overwrite)

 在继承的关系中,如果子类继承父类中某一个或者某些方法时,如果想要修改原有方法

 这需要重写该方法

函数重载(overload):

相关文章:

python——第十六天

面向对象——继承 class RichMan(object): def __init__(self): self.money 1000000000 self.company "阿里巴巴" self.__secretary "小蜜" def speak(self): print(f"我对钱不感兴趣,我最后悔的事,就是创建了{self.company…...

JWT介绍及演示

JWT 介绍 cookie(放在浏览器) cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。 cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本…...

Android Studio新版UI介绍

顶部菜单栏 左侧主要菜单入口项目名称分支名称 展开之后,主要功能与原来菜单栏功能一样,最大的变化就是把setting独立出去了。 而项目名称这里,展开就可以看到打开的历史工程列表,可以直接新建工程,原来需要在项目名称…...

基于ssm应急资源管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本应急资源管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…...

K8S学习指南(9)-k8s核心对象init pod

文章目录 引言什么是Init容器?Init容器的使用场景1. 数据初始化2. 网络设置3. 等待依赖服务 Init容器的生命周期1. **Pending**2. **Running**3. **Terminated** Init容器的示例Init容器的高级用法结论 引言 Kubernetes(简称K8s)是一个强大的…...

以太坊:前世今生与未来

一、引言 以太坊,这个在区块链领域大放异彩的名字,似乎已经成为了去中心化应用(DApps)的代名词。从初期的萌芽到如今的繁荣发展,以太坊经历了一段曲折而精彩的旅程。让我们一起回顾一下以太坊的前世今生,以…...

vue3若依框架,在页面中点击新增按钮跳转到新的页面,不是弹框,如何实现

在router文件中的动态路由数组中新增一个路由配置,这个配置的就是新的页面。 注意path不要和菜单配置中的路径一样,会不显示内容。 在菜单配置中要写权限标识就是permissions:[]里的内容 在children里的path要写占位符info/:data 点击新增按钮&#x…...

【大模型】800万纯AI战士年末大集结,硬核干货与音乐美食12月28日准时开炫

文章目录 WAVE SUMMIT五载十届,AI开发者热血正当时酷炫前沿、星河共聚!大模型技术生态发展正当时 回望2023年,大语言模型或许将是科技史上最浓墨重彩的一笔。从技术、产业到生态,大语言模型在突飞猛进中加速重构万物。随着理解、生…...

linux配置python环境

目录 安装screen安装解压工具安装python环境安装程序所需要的依赖包镜像附录 安装screen screen用于后台运行程序 先升级包管理工具 sudo apt-get update 安装screen sudo apt-get install screen创建screen screen -S erl安装解压工具 对上传到服务器的文件进行解压 …...

【教程】app备案流程简单三部曲即可完成

APP备案流程包括以下步骤: 1. 开发者实名认证:在提交备案申请之前,开发者需要通过移动应用开发平台进行实名认证。这个步骤需要提供身份证号码、姓名、联系方式等信息,并上传相关证件照片或扫描件。 2. 应用信息登记&#xff1a…...

C++使用vector创建二维数组并指定大小

一、一维容器的初始化&#xff1a; vector<int> v(n)表示声明一个容器v&#xff0c;并给他预定存储空间。每一个单元初始化为0&#xff0c;因此&#xff0c;vector<int> v(n)vector<int> v(n, 0)。 如果想要初始化为其他值&#xff0c;可改为vector<int…...

Spring支持哪几种事务管理类型,Spring 的事务实现方式和实现原理是?

1.Spring事务简介 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败 Spring事务作用&#xff1a;在数据层或业务层保障一系列的数据库操作同成功同失败 为何需要在业务层处理事务&#xff1f;&#xff1a;有些操作在数据层无法保证同成功同失败&#xff0c;…...

书-二分查找找某个数字p155

#include<stdio.h> int main(){int a[10]{1,4,5,6,7,8,23,34,90,14567};int mid;int low0;int high9;while(low<high){mid(lowhigh)/2;//数组分成两段&#xff0c;前一段low-mid&#xff0c;后一段mid-highif (a[mid]<23)//因为已经是排序好的了&#xff0c;所以如…...

【NLP】RAG 应用中的调优策略

​ 检索增强生成应用程序的调优策略 没有一种放之四海而皆准的算法能够最好地解决所有问题。 本文通过数据科学家的视角审视检索增强生成&#xff08;RAG&#xff09;管道。它讨论了您可以尝试提高 RAG 管道性能的潜在“超参数”。与深度学习中的实验类似&#xff0c;例如&am…...

Android-Framework 默认隐藏导航栏,添加控制显示属性

一、环境 高通865 Android 10 二、源码修改 device/qcom/qssi/system.prop -217,3 217,5 persist.ruichi.gpu2persist.ruichi.gpu_max587persist.ruichi.gpu_min305# Show navigation bar, 0 for display, 1 for hidden persist.navbar.status1 frameworks/base/services/…...

【AIGC】Midjourney高级进阶版

Midjourney 真是越玩越上头&#xff0c;真是给它的想象力跪了~ 研究了官方API&#xff0c;出一个进阶版教程 命令 旨在介绍Midjourney在Discord频道中的文本框中支持的指令。 1&#xff09;shorten 简化Prompt 该指令可以将输入的Prompt为模型可以理解的语言。模型理解语言…...

C语言学习----指针和数组

&#x1f308;这篇blog记录一下指针学习~ 主要是关于指针和数组之间的关系&#xff0c;还有指针的使用等~ &#x1f34e;指针变量是一个变量 其本身也有一个地址 也需要存放&#xff0c;就和int char等类型一样的&#xff0c;也需要有一个地址来存放它 &#x1f34c;而指针变量…...

学习Node.js与Webpack总结

今天学习了模块化的简介&#xff0c;其实一个项目是由很多个模块文件组成的&#xff0c;它们有它们各自的功能和用途来协助这个项目的完成&#xff0c;这样的模块组成有很多的好处比如提高代码的复用性、还可以按需加载、还有独立的作用域&#xff0c;还需要搞清楚的一点就是No…...

JAVA基础知识:泛型

一、什么是泛型&#xff1f; 泛型是Java中的一种参数化类型机制&#xff0c;它允许在类或方法的声明中使用类型参数&#xff0c;以实现代码的通用性和类型安全性。通过使用泛型&#xff0c;我们可以编写更加灵活和可复用的代码&#xff0c;同时减少类型转换错误的可能性。 二、…...

【WinRAR】为什么右键没有压缩选项?

我们安装了WinRAR之后想要压缩文件&#xff0c;但是右键点击文件之后发现并没有WinRAR压缩选项&#xff0c;这应该如何设置才能出现右键带有压缩选项呢&#xff1f;方法如下&#xff1a; 首先打开WinRAR&#xff0c;在上面功能中点击选项 – 设置 然后我们在设置界面中切换到集…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...

电脑桌面太单调,用Python写一个桌面小宠物应用。

下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡&#xff0c;可以响应鼠标点击&#xff0c;并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...