python(day029——面向对象2)

多物理场耦合仿真-主题029-多孔介质多相流耦合 多孔介质多相流耦合是描述地下和工程多孔介质中多相流体运动的重要理论框架。本主题通过六个典型工程案例,系统展示了多孔介质多相流理论在石油工程、环境工程、新能源和农业水利等领域的应用。:有限差分法和有限体积法是求解多相流问题的主要数值方法,全隐式方法适合强非线性问题。:相对渗透率和毛细压力曲线的准确表征、计算效率的提升、多尺度问题的处理仍是研究热点。:多孔介质多相流理论在油气开发、环境修复、燃料电池、碳封存等领域具有重要应用价值。:达西定律扩展、相对渗透率理论和毛细压力理论构成了多孔介质多相流的理论基础。 阅读详情

封装的好处:

1.写起来更简洁

2.维护更方便

3.将细节隐藏

类=变量(实例变量+类变量)+操作他们的方法:局部变量

本质:把需要管理的数据封装到实例里,然后基于类中的方法定义规则,以此来实现业务数据的完整性和一致性

class Person:  # 父类
    Count = 0

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

    def get_name(self):  # self:传递的参数是实例的内存地址
        # 告诉这个方法,使用哪个实例的数据
        """获取名字"""
        return self.name

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


class Teacher(Person):  # 子类
    '''此类主要用于管理老师的数据'''

    def __init__(self, name, salary):
        Person.__init__(self, name)  # 把父类中的实例变量存在了当前实例的地址中
        # self.name  = name
        print(id(self.name))
        self.salary = salary
        Teacher.Count += 1
        self.Count = 100


# 子类中需要初始化父类,提供完整的构造函数的初始化,满足父类的所有
# 参数使用要求
t = Teacher("吴老师", 1000)  # 触发了__init__的执行了--》实例化
s = Teacher("李老师", 2000)
print(Teacher.Count)
print(t.Count)
print(s.__doc__)
print(s.get_name.__doc__)
#__new__:真正生产内存地址的方法
#类的帮助信息可以通过ClassName.__doc__查看
import random
class Solider:

    def __init__(self,name):
        self.name = name
        self.blood = 100
        self.exp = 0
        self.alive_flag = "alive"

    def fight(self,enemy):
        print("%s 遇到了一个敌人%s,开打" %(self.name,enemy.name))
        if self.exp > enemy.exp:
            self.sub_blood(5)
            enemy.sub_blood(10)
            self.add_exp(5)
            enemy.add_exp(10)
        elif self.exp == enemy.exp:
            self.sub_blood(5)
            enemy.sub_blood(5)
            self.add_exp(5)
            enemy.add_exp(5)
        else:
            self.sub_blood(10)
            enemy.sub_blood(5)
            self.add_exp(10)
            enemy.add_exp(5)
        print("%s 遇到了一个敌人%s,打完了" %(self.name,enemy.name))


    def sub_blood(self,value):
        if isinstance(value,(int,float)):
            self.blood-=value
            print("%s掉了%s血" %(self.name,value))
            if self.blood<=0:
                self.alive_flag = "dead"
                self.blood=0
                print("%s被打死了" %self.name)
                
    def add_exp(self,value):
        if isinstance(value,(int,float)):
            self.exp+=value
            print("%s涨了%s经验" %(self.name,value))



s1 = Solider("张三")
s2 = Solider("李四")
s3=Solider("王五")
s4=Solider("赵璐")

scerio=[]
scerio.append(s1)
scerio.append(s2)
scerio.append(s3)
scerio.append(s4)

time=0
while time<30:
    time+=1
    t1=random.choice(scerio)
    t2=random.choice(scerio)
    if t1!=t2:
        t1.fight(t2)
    else:
        continue

for i in scerio:
    print("%s还有%s血,%s经验,%s" %(i.name,i.blood,i.exp,i.alive_flag))
class P:
    def __init__(self,name):
        self.name=name

    def print_info(self):
        print("info method is invoked")

    @classmethod
    def print_sth(cls):#类态方法需要有@classmethod,还要有cls
        #不能用实例变量
        print("class method is invoked")

    @staticmethod
    def print_p():#静态方法需要有@staticmethod,可以有参数也可以没有
        #不能用实例变量
        print("static method is invokde")

a=P("小花")
a.print_info() #通过实例调用实例方法

a.print_sth() #通过实例名调用类方法
P.print_sth() #通过类名称调用类方法

a.print_p()#通过实例名调用静态方法
P.print_p()#通过类名称调用静态方法

类的属性

#encoding=utf-8
class Foo:

    def func(self):
        print ("func!")

    # 定义属性
    @property
    def prop(self):
        return "gloryroad"
# ############### 调用 ###############
foo_obj = Foo()

foo_obj.func()
print (foo_obj.prop)   #调用属性不需要括号,等于调用了prop方法,获取返回值

#encoding=utf-8
class Goods(object):

    @property
    def price(self):
        print ('@property')

    @price.setter
    def price(self, value):
        print ('@price.setter')

    @price.deleter
    def price(self):
        print ('@price.deleter')

# ############### 调用
obj = Goods()

obj.price          # 自动执行 @property 修饰的 price 方法,并获取方法的返回值

obj.price = 123    # 自动执行 @price.setter 修饰的 price 方法,并将  123 赋值给方法的参数

del obj.price      # 自动执行 @price.deleter 修饰的 price 方法

#属性:
#当读取属性时,执行@property方法
#当修改属性时,执行@price.setter方法
#当删除属性时,执行@price.deleter方法
#encoding=utf-8
class Goods(object):
    def __init__(self):
        self.__good_price=0

    @property
    def price(self):
        return  self.__good_price

    @price.setter
    def price(self, value):
        if isinstance(value,(int,float)) and value>=0:
            self.__good_price=value

    @price.deleter
    def price(self):
        print ('@price.deleter')
#例子中的@property的方法名是price,在外部访问就是实例名.price
g=Goods()
g.price=-10
print(g.price)
g.price=122
print(g.price)
g.__good_price=456 #生成一个公开可以访问的实例变量,和类里的不是同一个值
print(g.__good_price) 
print(g.price)

'''结果:
0
122
456
122
'''

 

 

C#计算八字 private string[] jq = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private string[] dz = { "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子" }; 阅读详情

相关推荐

开放平台 - 互动玩法演进之路

随着直播业务和用户规模日益壮大,如何丰富直播间内容、增强直播间内用户互动效果,提升营收数据变得更加关键。

bilibili_TC的博客 1740

Day18-面向对象

fullmatch(正则,字符串) - 完全匹配,如果匹配成功返回匹配对象,否则返回None match(正则,字符串) - 匹配字符串开头,如果匹配成功返回匹配对象,否则返回None search(正则,字符串) - 匹配第一个满足正则的字符串,如果匹配成功返回匹配对象,否则返回None findall(正则,字符串) - 获取所有满足正字的字符串,返回值是一个列表,列表中的元素是字符串 finditer(正则,字符串) - 获取字符串中所有满足正则的字串,返回一个迭代器,迭代器中元素

HunterQAQ的博客 168

Crossbar RRAM技术解析:从1TnR架构到存储革命

非易失性存储器(NVM)是数据存储的核心技术,其原理基于物理状态的稳定改变以实现数据持久化。阻变存储器(RRAM)作为一种新兴NVM,利用导电细丝在介质层中的形成与断裂实现数据存储,具有高速、低功耗和结构简单的优势。在工程实践中,RRAM面临潜行路径电流等挑战,而Crossbar提出的1TnR架构通过引入共享晶体管有效解决了这一问题,在保证性能的同时提升了集成密度。该技术与CMOS工艺兼容,支持后端集成与多层堆叠,为高密度存储和嵌入式应用提供了新的解决方案。结合当前行业对高能效、高密度存储的需求,RRAM在

weixin_42523104的博客 321

day 18-面向对象学习总结

获取匹配对象 匹配对象.group()获取整个正则表达式在字符串中的匹配结果 匹配对象.group(N)获取正则中第N个分组匹配到的结果(捕获第N个分组的内容) 2.正则参数 1)忽略大小写 匹配的时候小写字母可以直接和对应的大写字母匹配方法1:在正则表达式的最前面加(?i)方法2:给正则相关函数的flags赋值为I或者IGNORECASE(S)from re import I, IGNORECASE 2)单行匹配 正则匹配的时候默认是多行匹配, 多行匹配的时候.不可以和\n进行匹配单行匹配下.可以和\n

qq_56490673的博客 174

电商项目功能简述

1.电商行业的技术特点 1.技术性 2.技术范围广 3.分布式 4.高并发,集群,负载均衡,高可用 5.海量数据 6.业务复杂 7.系统安全 2.电商行业的模式 B2B:企业到企业,商家到商家.代表:阿里巴巴 B2C:商家到客户.代表:京东.淘宝商城 C2C:客户到客户.淘宝集市 O2O:线上到线下 3.B2C电商系统架构功能模块 4.B2C电商系统架构功能描述 后台管理系统:管理商品、订单、类...

weixin_45116848的博客 9744

在trae CN中使用conda环境(已解决)

Trae CN 是字节跳动于 2025 年 3 月 3 日发布的国内首个 AI 原生集成开发环境(AI IDE)123。

zwzscnds的博客 6938

DAY 029:布设虚拟环境

DAY 029:布设虚拟环境

HilariousBojack的博客 109

稚晖君Dummy机械臂CAN总线控制详解:从代码到实战(附常见问题排查)

本文深入解析了稚晖君Dummy机械臂的CAN总线控制技术,从协议设计到代码实现,详细介绍了CAN总线在机械臂控制中的核心价值、通信协议栈设计、运动控制指令实现及常见问题排查方法。通过实战案例和代码示例,帮助开发者快速掌握机械臂CAN总线控制的关键技术。

uuu88的博客 295

Day029: 队列:先进先出的数据结构

​在计算机科学中,队列(Queue)是一种重要的数据结构,它遵循先进先出(First In First Out,FIFO)的原则。队列可以用于解决许多实际问题,如任务调度、数据缓冲等。本文将详细介绍队列的定义、基本操作、应用场景以及在 Python 中的实现方法。

u014481728的博客 1125

磁编码器选型避坑指南:为什么MT6816比霍尔传感器更适合你的伺服系统?

本文深入对比了MT6816磁编码器与传统霍尔传感器在伺服系统中的应用。MT6816基于AMR技术,对磁场方向敏感而非强度,具备高精度、强抗干扰、高安装容差和极低延时等优势,尤其适合高转速、恶劣环境下的工业场景,能有效提升系统可靠性与长期稳定性。

rainy的博客 1104

SimMechanics二连杆仿真避坑指南:Solid模块坐标系设置与Rigid Transform常见错误

本文详细解析了SimMechanics中二连杆平面臂仿真的常见问题,重点探讨Solid模块坐标系设置与Rigid Transform模块的配置陷阱。通过实战案例和MATLAB代码示例,揭示多体系统仿真中的关键错误点,包括坐标系方向定义、参数匹配、端口连接规则等,帮助工程师有效规避仿真风险,提升建模效率。

weixin_29309213的博客 412

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

uniapp:人脸识别功能,已测试,直接复制源码,支持H5,APP安卓。不依赖任何js,SDK。

uniapp人脸识别功能,已测试可直接复制源码,支持H5,APP安卓。不依赖任何js,SDK。 APP效果图:

sunluyi的博客 2226

入门学习-Python-小甲鱼学习资料-Day029-文件:一个任务

根据视频自己练习 任务如下: 【理清思路】 1、 首先读取文件 2、 将文件存入列表逐行进行分析 : 如果没有到 分隔符 “” 标识 , 那就进行数据提取并分别存在boy 和gilr 列表中 ; 如果到了 分隔符 “” 标识 , 那就将已经分类的列表数据命名存储为文件 ; 3、 直到文件结束后 , 关闭文件 , 任务完成。 初稿代码如下 : f = open('record.txt') ...

seven1levin的博客 500

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...

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

day-029-综合练习-数据分析工具

学习内容掌握情况一句话要点CSV 数据读取✅ 重点csv.DictReader 返回字典列表动态操作符✅ 亮点字典映射代替 if-elif函数式思维✅ 理解每个操作返回新对象(不可变模式)命令行参数✅ 了解sys.argv 接收文件路径。

chouchuang的博客 215

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

029day(二分查找的学习)

《2017年11月8日》【连续029天】 标题:二分查找的学习; 内容:A.观看MOOC11.2,11.3; B.二分查找的原理与二分法相似; (a).写一个函数BinarySeach,在包含size个元素的,从小到大排序的int数组a里查找元素p,如果找到则返回元素下标,如果找不到,则返回-1; int BinarySearch(int a[],int size,i...

orangecloudy的博客 232

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

<LeetCode天梯>Day029环形链表(哈希表+双指针) | 初级算法 | Python

????作者简介:大家好,我是车神哥,府学路18号的车神???? ????个人主页:应无所住而生其心的博客_府学路18号车神_优快云博客 ????点赞➕评论➕收藏 == 养成习惯(一键三连)???? ????本系列主要以刷LeetCode(力扣)网站的各类题为标准,实现自我能力的提升为目标⚡ ⚡希望大家多多支持????~一起加油 ???? 专栏《LeetCode天梯》 周五,今天一直在赶论文,啊~!!!快要截止了,就一直赶赶赶,就忙到了现在,但是,刷题不止,拒绝❌内卷,从我做起,哈哈哈,还是坚持啊吧

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

Python学习--day 05

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

qinshimingyue27的博客 224

python学习之老男孩python全栈第九期_day029知识点总结——configparser模快、logging模块...

一. configparser模块 生成文档 import configparser config = configparser.ConfigParser() config["DEFAULT"] = {'ServerAliveInterval': '45', 'Compression': 'yes', ...

weixin_33827965的博客 101

029-Python入门(练习题)

#1.使用列表推导来对列表中的每个奇数。 该列表由一系列逗号分隔的数字输入 #输入: #1,5,6,2,3,4,9(输入案例) #1,5,3,9(结果) print("请输入需要提取的数字:") values = input() numbers = [x for x in values.split(",") if int(x)%2!=0] print (",".join(numbers)) """ 习题:输入某年某月某日,判断这一天是这一年的第几天? 输入案例 Year:2021 Month:12 da.

qq_43476212的博客 1162

day029socketserver模块实现并发,线程、 ftp上传或下载,打印进度条

本节内容: 1.socketserver模块实现并发 2.ftp上传、下载示例 3.线程 4.打印进度条 参考文章: 一、socketserver模块实现并发 为什么要讲socketserver? 我们之前写的tcp协议的socket是不是一次只能和一个客户端通信,如果用socketserver可以实现和多个客户端通信。 它是在socket的基础上进行了一层封装,也就是说底层还是...

weixin_30734435的博客 182

merge规则 python_案例:基于自动节点树的数据异常原因下探分析(python_029)

在流量数据化运营中,数据异常波动时,就需要分析师找到主要影响因素,并分析原因。这种异常数据检测的场景包括:监测网站平均订单价值、订单量、订单转化率波动;注册或登录的异常变化;某个登录页面浏览量趋势;正在投入巨额广告费的渠道效果波动;网站跳出率情况是否波动正常等。但在寻找影响异常波动的主要因素时,有时需要下探的层级较多,实施起来非常费时。比如大型公司的广告投放渠道,可能包含以下层级:一级渠道包括SE...

weixin_35675101的博客 287

Python基础day11强化练习(上)

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

heima201907的博客 245

Python全栈100天--目录

Python基础语法 day01 初识Python day02 while循环 运算符和编码 day03 字符串 day04 列表和元组 day05 字典和集合 day06 小数据池 is和== 再谈编码 day07 深浅拷贝 day08 文件操作 函数 day09 初识函数 day10 函数进阶 day11 第一类对象 闭包 迭代器 day12 生成器和各种推导式 ...

weixin_30482383的博客 227

python图片自动校正流量_案例:基于自动节点树的数据异常原因下探分析(python_029)...

在流量数据化运营中,数据异常波动时,就需要分析师找到主要影响因素,并分析原因。这种异常数据检测的场景包括:监测网站平均订单价值、订单量、订单转化率波动;注册或登录的异常变化;某个登录页面浏览量趋势;正在投入巨额广告费的渠道效果波动;网站跳出率情况是否波动正常等。但在寻找影响异常波动的主要因素时,有时需要下探的层级较多,实施起来非常费时。比如大型公司的广告投放渠道,可能包含以下层级:一级渠道包括SE...

weixin_39908082的博客 215

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(day028——面向对象1)
下一篇: python(day030——面向对象3)
王总总
博客等级 码龄8年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值