python(day028——面向对象1)

知识图谱中的 Ontology(本体论) 本文的部分图片和内容来自中国科学院自动化研究所刘康老师的课件 Ontology(本体论) Ontology 是(特定领域)信息组织的一种形式,是领域知识规范的抽象和描述,是表达、共享、重用知识的方法。 Ontology 是知识体系构建的关键技术,知识图谱是一种人工智能技术,它的关键在于让计算机能够处理人类的知识。然而,人类脑海中的知识通常是直觉性的,我们无法将这种直觉性的知识直接输入给计算机,On... 阅读详情

#使用类的编程方式,叫做面向对象编程,OOP
#object oriented programming

age = 100  #全局变量,在当前文件中,可以被访问
class Resume:  # 简历模板,类对象

    count = 0 #类变量,在内存中只保存一个地址。做统计,或者是不同实例可以一起访问的公有变量。

    def __init__(self, name, age):
        #不加self的变量叫做局部变量,只能在当前方法中使用
        #加self的变量叫做实例变量,可以再不同的实例方法中被访问到
        self.name = name
        self.age = age
        Resume.count+=1  #调用类变量

    def set_age(self,age):  #设置一下年龄
        self.age=age

    def get_age(self):  #读取一下年龄
        print (age)  #age定义在类外面,全局变量
        return self.age

# 为实例,实例对象
xiaozhang_resume = Resume("小张", 28)
xiaoli_resume = Resume("小李", 28)
xiaowu_resume = Resume("小吴", 28)

print(xiaozhang_resume.name)
print(xiaoli_resume.name)
print(xiaowu_resume.name)

print(xiaozhang_resume.get_age()) #调用了实例方法
xiaozhang_resume.set_age(11)
print(xiaozhang_resume.get_age())

print(Resume.count) #调用类变量,该类变量统计生成多少次实例
print(xiaozhang_resume.count) #用实例名也可以调用类变量

xiaozhang_resume.count=100  #定义了一个count的实例变量,和原本的count没关系,相互不影响
print(Resume.count)  #结果3
print(xiaozhang_resume.count)  #结果100

Resume.count=100  #调用类变量,count变为100
print(Resume.count)  #结果100
print(xiaozhang_resume.count)  #结果100

# 对象:类对象和实例对象
#类对象:类定义,有哪些方法含有那些变量。在内存中,只存一份类变量和类中定义的相关方法。
#实例对象:每个实例数据相互独立,那么在内存中,内一个实例单独占用一个独立的内存地址空间。
#方法:类里面定义的函数。如果包含self的参数,表示实例方法。
#实例变量:self.xxx。每个self.xxx中的内容都不一样。在类中的不同方法中可以可以使用。
#         不同实例的实例变量值是存在各自实例地址中,相互独立,且不影响。
#局部变量:只能在函数或类的方法中定义,且只能在当前方法中使用,外面不可使用
#全局变量:在当前文件中(文件默认命名空间里面),哪里都可以访问
#类变量:类名.xxx,类中所有方法均可访问,所有实例共用一个类变量。在内存中只有一个地址。

总结:

1.如果类变量名字,在实例中不存在,则:

   类名.xxx和实例名.xxx访问到都是类变量

2.如果类变量名字,在实例中存在,则:

   类名.xxx——>类变量,实例名.xxx访问的是实例变量

3.如果类变量名字在实例中不存在,但多了一步:

   在类的外面:实例名.类变量名字=yyy

   那么实例名.类变量名字访问的是新生成的实例变量,也就是yyy

   类名.xxx——>类变量

>>> class P:
...     count=0
...     def __init__(self):
...         P.count+=1
...
>>> p1=P()
>>> p2=P()
>>> P.count
2
>>> p1.count
2
>>> p2.count
2
>>> p1.count=123 #给实例变量赋值,不影响类变量值
>>> p2.count=456 #给实例变量赋值
>>> p1.count
123
>>> p2.count
456
>>> P.count
2

私有变量

class Resume:
    count = 0
    def __init__(self, name, age):
        self.name = name
        self.__age = age  #私有变量,等价于self._Resume__age
        Resume.count+=1  #调用类变量

    def set_age(self,age):  #设置一下年龄
        if isinstance(age,int) and age>0: #对变量的设置进行限制
            self.__age=age
        else:
            return None
        return self.__age

    def get_age(self):  #读取一下年龄
        return self.__age

# 为实例,实例对象
xiaozhang_resume = Resume("小张", 28)
xiaozhang_resume.__age=11  #相当于在外部生成了一个新的实例变量,和类里的私有变量不是同一个值
#修改的值和原有的私有变量,是两个不同变量
#在类里面的self.__age和self._Resume__age不一样
print(xiaozhang_resume.get_age())  #结果为28
#print(xiaozhang_resume.__age())  执行报错,私有变量在外部不能直接访问
print(xiaozhang_resume._Resume__age)#可以如此访问,但是不安全,不符合规则


1 实例方法:def xxx(self),必须实例化之后才可以使用
2 staticmethod 方法
  @statcimethod
  def xxxx():
      类变量,不能使用实例变量
  通过类名或者实例名调用
3 classmethod方法
  @classmethod
  def xxxx(cls):
        类变量,不能使用实例变量
  通过类名或者实例名调用


静态方法

优势:可以用作把很多函数归类。使用静态方法定义常用的函数。

class Resume:
    count = 0
    def __init__(self, name, age):
        self.name = name
        self.__age = age  #私有变量,等价于self._Resume__age
        Resume.count+=1  #调用类变量

    def set_age(self,age):  #设置一下年龄
        if isinstance(age,int) and age>0: #对变量的设置进行限制
            self.__age=age
        else:
            return None
        return self.__age

    def get_age(self):  #读取一下年龄
        return self.__age

    @staticmethod #静态方法
    def get_count():
        return Resume.count #不能使用实例变量,可以使用类变量

# 为实例,实例对象
print(Resume.get_count()) 
#静态方法不需要实例化,在不生成实例时候,也可以直接调用,里面只能生成类变量
xiaozhang_resume = Resume("小张", 28)
print(xiaozhang_resume.get_count())


类方法

class String:

    @classmethod  # 类方法
    def get_all_upper_letters(cls, a, b):
        print(a, b)
        return None


print(String.get_all_upper_letters(1, 2))

 

基于STM32F1XX 、HAL库的BH1745NUC-E2环境光传感器驱动应用C语言程序设计 printf("BH1745制造商ID: 0x%02X\r\n", BH1745_ReadManufacturerID(&hbh1745));#define BH1745_ADDR_HIGH 0x39 // ADDR引脚接VDD。#define BH1745_ADDR_LOW 0x38 // ADDR引脚接地。= 0xE0) // BH1745制造商ID为0xE0。// 清除RGBC测量使能位。printf("BH1745初始化失败\r\n"); 阅读详情

相关推荐

Mac新手必看:用Homebrew安装wget的保姆级教程,附常见报错一键修复

本文为Mac新手提供使用Homebrew安装wget的详细教程,涵盖从Homebrew安装到wget基础使用的全流程,并附常见报错一键修复方案。通过本指南,用户可轻松掌握命令行下载工具wget的安装与使用技巧,解决Mac环境下资源下载的各种问题。

weixin_30635053的博客 367

python @property,@staticmethod及@classmethod内置装饰器小结

装饰器相关知识传送门——https://blog.youkuaiyun.com/weixin_43533825/article/details/87823860 一、@property装饰器 @property的作用是将类里的方法变成属性,同时可以对属性进行校验检查,简化代码,减少出错的概率 正常类和实例化,属性调用示例代码: class user(object): def get...

大魔王的博客 305

PHY6252开发实战:从零构建BLE串口透传应用

本文详细介绍了PHY6252开发板在BLE串口透传应用中的实战经验,包括开发环境搭建、BLE串口透传例程解析、AT指令集实现与扩展、数据透传机制优化以及常见问题排查指南。通过智能家居遥控器项目案例,展示了PHY6252在低功耗物联网设备开发中的实际应用。

weixin_29183637的博客 313

python学习之老男孩python全栈第九期_day028知识点总结——面向对象进阶、hashlib...

一. 面向对象进阶与实例 dic = {'k': 'v' } 对象:存储 属性 和 调用方法 dic['k'] = 'v' class Foo: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex d...

weixin_34085658的博客 792

避坑指南:Quectel EC200A-CN在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置全解析

本文详细解析了Quectel EC200A-CN模块在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置,包括模式选择、内核配置、动态切换AT指令、网络接口生成与排错、路由与防火墙设置、性能调优及特殊场景应对策略,帮助开发者避免常见配置陷阱,提升网络稳定性和效率。

weixin_42531588的博客 288

VS2022如何兼容老项目?.NET Framework 4.0/4.5安装避坑指南

本文提供了在Visual Studio 2022中兼容和维护.NET Framework 4.0/4.5等老旧项目的完整解决方案。针对VS2022无法直接识别旧框架的核心问题,文章详细剖析了原因,并重点推荐通过官方NuGet包安全获取引用程序集的方法,给出了从下载、解压到部署至标准目录的详细步骤。同时,文章还深入探讨了项目文件格式过旧、NuGet包还原失败等进阶问题的排查与解决策略,旨在帮助开发者高效、稳定地在现代开发环境中维护历史代码库。

weixin_27734811的博客 514

day-028-综合练习-命令行工具

学习内容掌握情况一句话要点综合运用✅ 实战把 27 天的知识串成一个完整项目项目结构✅ 理解数据类 + 管理类 + 主循环数据持久化✅ 重点JSON 文件保存状态用户交互✅ 理解菜单 + 输入 + 循环。

chouchuang的博客 190

星网锐捷语音网关密码重置恢复出厂设置

星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系...

cibazhanji2176的博客 1万+

Python面向对象编程Day 28部分知识点

__enter__和__exit__ with obj as f:   '代码块' 1.with obj --->触发obj.__enter__(),拿到返回值 2.as f ---> f=返回值 3.with obj as f 等同于 f=obj.__enter__() 4.执行代码块 两种情况:   没有异常的情况下,整个代码块运行完毕后去触发__exi...

weixin_30763397的博客 86

逆向工程实战:手把手教你破解药监局网站的动态数据加载机制(Python+Chrome开发者工具)

本文详细介绍了如何利用Python和Chrome开发者工具逆向破解药监局网站的动态数据加载机制。通过分析Ajax请求、解析JSON响应数据以及处理动态参数,帮助开发者高效采集动态加载内容,适用于爬虫开发与数据分析场景。

weixin_30832143的博客 68

LSTM在DNA序列分析中的应用:生物信息学的探索

长短期记忆网络(LSTM)是循环神经网络(RNN)的一个变种,旨在解决RNN在长序列数据中出现的梯度消失和梯度爆炸问题。LSTM通过引入“记忆单元”和三个门(输入门、遗忘门和输出门)来有效捕捉长距离依赖关系。这使得LSTM在处理DNA序列等时间序列数据时具有优势。LSTM在DNA序列分析中展现了强大的能力,能够捕捉复杂的序列特征,并提供高效的解决方案。本文从LSTM的基本原理、DNA序列特性、模型构建、训练过程到实际应用进行了详细阐述。

斌擎科技 752

Day028: 栈:后进先出的数据结构

​在计算机科学中,栈(Stack)是一种重要的数据结构,它遵循后进先出(Last In First Out,LIFO)的原则。栈可以用于解决许多实际问题,如表达式求值、括号匹配、函数调用等。本文将详细介绍栈的定义、基本操作、应用场景以及在 Python 中的实现方法。

u014481728的博客 1415

Orange3实战教程:实例---文本分类

我们可以使用预测模型按作者、类型、情感等对文档进行分类。在此工作流中,我们根据文档的Aarne Thompshon Uther索引对文档进行归类,这是故事的主题定义。我们使用两个简单的学习器,Logistic回归和朴素贝叶斯,两者都可以在诺谟图中检查。然后再从可视化分类中添加列线图组件,观察哪些词对逻辑回归最重要。也可以尝试使用在朴素贝叶斯模型上,并编辑连线属性。再从模型中添加朴素贝叶斯模型,以尝试不同的学习器。

err2008的专栏 385

day028 Tcp和Udp协议

# # tcp和udp的区别# tcp协议:面向连接,消息可靠,传输速度慢,消息是面向流的,无消息保护边界# udp协议:面向无连接,消息不可靠,传输速度快,消息是面向包的,有消息保护边界 tcp服务端 import socketserver=socket.socket()server_ip_port=("192.168.15.77",8002)server.bind(server_i...

weixin_34138056的博客 87

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

入门学习-Python-小甲鱼学习资料-Day028-文件:因为懂你,所以永恒

根据视频自己联练习 Python的文件和信息的输入输出 : 【1】 文件的打开方式 : 【2】 文件对象的方法 f = open(‘d:\record.txt’) print(f) print(f.read(36)) print(f.tell()) print(list(f)) f.close() f = open(‘d:\record.txt’) lines=list(f) for each...

seven1levin的博客 357

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

028_Python知识点_魔术方法

1. 特殊属性 常见的特殊属性: 特殊属性 功能 __name__ 类、函数、方法等的名字 __module__ 类所在的模块 __class__ 对象或类所属的类 __bases__ 当前类的父类 __doc__ 类、函数的帮助文档 __mor__ 方法解析顺序。多继承中,类的继承算法 __dict__ 类或对象的属性,字典 __dir__ 返回类或对...

煮面要加牛奶的博客 359

架设云服务器 DAY 028

从零开始写社交博客 Day 028

HilariousBojack的博客 109

Python学习--day 05

Python学习——day05024.练习英雄联盟 024.练习英雄联盟

qinshimingyue27的博客 224

python学习之老男孩python全栈第九期_day022作业

1. 写一个求正方形周长和面积的类 1 class Square: 2 def __init__(self, length): 3 self.length = length 4 def area(self): 5 return '边长为{}的正方形的面积为:{}'.format(self.length, self.length...

weixin_34246551的博客 162

<LeetCode天梯>Day028 回文链表(双指针+递归+栈+数组) | 初级算法 | Python

????作者简介:大家好,我是车神哥,府学路18号的车神???? ????个人主页:应无所住而生其心的博客_府学路18号车神_优快云博客 ????点赞➕评论➕收藏 == 养成习惯(一键三连)???? ????本系列主要以刷LeetCode(力扣)网站的各类题为标准,实现自我能力的提升为目标⚡ ⚡希望大家多多支持????~一起加油 ???? 专栏《LeetCode天梯》 周四,今天中午终于拥有了一个久违的午休了,老黄说我睡到打呼噜,连续加班几天了,赶项目,做实验,写论文,哎,对了,官方送的优快云的水

车手只需要车和手,压力来自轮胎 1347

PYTHON 基础-DAY2 20210401

目录014 链式赋值、系列解包赋值、常量015 内置数据类型-基本算术运算符016 整数017 浮点数018 时间表示019 多点坐标020 布尔值021同一运算符-整数缓存问题022-029 字符串022 unicode字符集、三种创建字符串方式、len()023 转义字符、字符拼接、字符串复制、input()输入024 str()、[]提取字符、replace()替换、内存分析025 切片slice操作、逆序026 split()分隔、jion()合并、join()效率测试027 驻留机制、内存分析、字

weixin_47442524的博客 172

python基础语法—day03(笔记)

主要内容: 文章目录1.列表的复制2.列表推导式的使用3.字典使用的注意事项4.字典中update()方法的使用5.字典的几种遍历方式6.集合的基本使用7.集合中运算符的使用 1.列表的复制 什么是不可数据类型和不可变数据类型? 在python中不可变数据类型有数字,字符串和元组;可变数据类型有字典,列表等。 不可变数据类型会改变内存地址,可变数据类型不改变数据类型。 (1)不可变数据类型,num1的内存地址改变了 num1=10 num2=num1 print("num1=0x%x,num2=0x%x"%

weixin_43497769的博客 462

Python酷库之旅-第三方库Pandas(028)

第三方库Pandas(028)

ygb_1024的博客 1149

Python基础day11强化练习(上)

应用:老王开枪 1.人类 属性 姓名 血量 持有的枪 方法 安子弹 安弹夹 拿枪(持有抢) 开枪 2.子弹类 属性 杀伤力 方法 伤害敌人(让敌人掉血) 3.弹夹类 属性 容量(子弹存储...

heima201907的博客 245

Python基础day12飞机大战(下)

飞机大战代码:显示敌机 [Python]纯文本查看复制代码 ? 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 ...

xiaoyaGrace的博客 243
上一篇: python(day027——集合、时间、类)
下一篇: python(day029——面向对象2)
王总总
博客等级 码龄8年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值