首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >明明都定义好了,怎么还是说我没有声明啊?

明明都定义好了,怎么还是说我没有声明啊?

作者头像
马拉松程序员
发布于 2022-06-15 04:38:06
发布于 2022-06-15 04:38:06
65900
代码可运行
举报
运行总次数:0
代码可运行

今天五四青年节,祝大家青年节快乐!

闲来无事在家学习,突然有位粉丝发消息来问0这样的问题:明明都定义好了,还是说我没有声明啊?

为什么呢?因为你不是明明。

好了,看具体问题,原代码如下:

看代码的内容,大概是想实现输入一个关键词,查询zsms(我也不知道这是啥名字的拼音缩写)中包含关键词的内容,然后通过基础窗口控件QWidget展示出来。

现在在执行查询语句的时候,val这个变量传不到sql语句里,实在不知道咋搞了,来求教我了。

这都是一些基础问题,这个粉丝也是一位刚刚入行学习的小白,能看出来相关语法理解还是不透彻。

那么我就按照粉丝给我发的代码截图中内容,说下代码中的问题,互相学习,互相进步,我理解的不一定都对啊,仅供参考。

在截图的代码中,Demo类的中添加了一个还有def __init__(self):方法,这是此类的构造方法,这个跟Java的不太一样,Java的写法应该是Demo()。

然后,又编写了intiUI的方法,大概实现的内容就是刚才所讲的内容。问题是出在了val变量上。Sql执行代码的意思写一个动态传参,按照传入的关键词进行模糊搜索,但是现在找不到val变量。

这里呢,很简单,要是想取到初始化传入的val值,加上一个self.val就可以。self是什么?意思是类实例化后,self即代表着实例(对象)本身。从上下文中可以看出来,这里取val就是想拿初始化传入的val值。

相当于是这里,self.val就是在取Demo(“val”)传入的值。如果不加self,那么就是方法内部的局部变量,你使用的时候,需要传入或者定义。那么就得这么写def initUI(self, val):,在__init__中需要写成self.initUI(val)

虽然感觉有点别扭,但是能跑就行。毕竟写代码的理念就是,先上线,又优化。能跑起来再说。

除此之外,就截图代码中的还有潜在的问题。

  • 从sql的编写来看,命名不规范,zsms,zsbt,这是属性注释的拼音首字母,尤其这个表名。如果做二次开发,要是没有文档,我真是猜不出来啥意思。关于对变量、属性、类名如何命名,可以自行搜索阿里公开的《开发规范》
  • 其次,从使用到的cx_oracle上判断用的oracle,从新手学习角度,不建议上来就用oracle数据库,推荐先学MySQL
  • 再者,从抽象和封装以及面向对象的设计理念上,intiUI方法中不适合把数据库的链接和QWidget的初始化,都放到这里面。这些属于对业务逻辑不相关的内容,可以抽离出来,做成公共方法类,数据库连接池,而不是在业务逻辑中处理这些问题。

最后再分享一个传参取值的小tips,在使用字符串拼接的时候,经常会遇到一些占位符,或者变量需要传参的情况,可以使用下面方法2。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def initUI(self, val):
        # 方法1
        sql1 = "select  * from table a where title like %s and a=%s " % (val, val)
        # 方法2
        sql2 = f"select  * from table a where title like %{val}% and a={val}"
        print(sql2)

如果sql的参数的比较多,使用方法2不容易写错位置。

不过还是刚开始那句话,对于初学者来说,先实现后优化,能跑起来的代码就是好代码。

好了,今天就分享到这里,希望对你有用。

我是马拉松程序员,可不至于代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马拉松程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
又一次变革,Vue 更彻底的拥抱了函数式
我本来今天想写一篇文章跟大家介绍一下 React Native for Windows + macOS。之前没有用过,所以这两天花时间调研了一下,也写了一些基础的 Demo,不过由于下午的 Vue Conf 中,我惊讶的发现了一个非常棒的东西,想迫不及待的分享给大家,他就是 Vue Vine,一个更为彻底拥抱函数式的新开发方式。
用户6901603
2024/07/12
1200
又一次变革,Vue 更彻底的拥抱了函数式
(九)python3 只需3小时带你轻松入门——函数自定义
以上代码使用def 开头,后面是函数名print_,之后接一对圆括号,圆括号后接一个冒号表示结束;在函数体中,使用缩进表示代码块,里面输出“这里是自定义函数”。 这个函数的作用就是输出这里是自定义函数这个功能。 调用时和平常函数调用一样,函数名加圆括号。 结果:
1_bit
2020/10/23
4150
(九)python3 只需3小时带你轻松入门——函数自定义
flask+vue:创建一个数据列表并实现简单的查询功能(一)
这里要用到element-ui中Select 选择器、 Form 表单 、DatePicker 日期选择器
冰霜
2022/03/15
2.7K1
flask+vue:创建一个数据列表并实现简单的查询功能(一)
函数相关知识汇总
一.函数的定义 定义函数的规则: 1.定义:def 关键词开头,空格之后接函数名称和圆括号()。 2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。     参数可以定义多个,也可以不定义。     参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。     如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序 3.注释:函数的第一行语句应该添加注释。 4.函数体:函数内容以冒号起始,并且缩进。 5.返回值:return [表达式
用户1214487
2018/01/23
8020
Python编程 函数的定义与参数
函数 只有在调用时才会执行,通过 function_name(param) 进行调用
网络豆
2023/10/15
2800
Python编程 函数的定义与参数
python 之 函数
现在有这么个情况:假设我们python中的len方法不可以使用了,而恰好你又要计算一个字符串的长度你该怎么办呢?有人说:‘简单,可以使用for循环嘛
全栈程序员站长
2022/07/21
3990
用 Python 算法打造智能聊天机器人
今天咱来做一个能 "听懂" 人话的聊天机器人 —— 不用严格匹配关键词,哪怕你说 "饭吃了没"" 你吃饭了没 " 这种意思差不多的话,它都能接上茬。咱用自然语言处理里的基础算法,让机器人能判断句子的相似程度,代码写得明明白白,保证您能跑起来,还能看透里头的门道。
小白的大数据之旅
2025/07/06
1320
用 Python 算法打造智能聊天机器人
基于IDEA的自动化代码审计插件开发初探
然后本文主要是给大家介绍一下怎么实现一个IDEA静态代码检测插件,现在都在讲安全左移嘛,我觉得静态代码检测插件就是一个安全左移很好的落地,于是就想着学习一下
tnt阿信
2021/04/26
1.9K0
基于IDEA的自动化代码审计插件开发初探
(数据科学学习手札46)Scala中的面向对象
  在Scala看来,一切皆是对象,对象是Scala的核心,Scala面向对象涉及到class、object、构造器等,本文就将对class中的重点内容进行介绍;
Feffery
2018/08/15
5510
python中的asyncio使用详解与异步协程的处理流程分析
普通函数的定义是使用 def 关键词,异步的函数,协程函数(Coroutine)本质上是一个函数,特点是在代码块中可以将执行权交给其他协程,使用async def 来定义
霍格沃兹测试开发Muller老师
2022/08/10
1.3K0
mybatis开发,你用 xml 还是注解?我 pick ...
最近在看公司的一些项目的时候发现有的项目里面的 mybatis 是基于注解开发的。而我个人的习惯是基于 xml 文件开发。
why技术
2020/05/20
1.6K0
如何编写可测试的代码:两个核心三个思路
在需要长期迭代的项目中编写单元测试,已经在各个团队中逐渐成为一种虚伪的共识。虽然嘴上都说好,但身体很诚实。
腾讯云开发者
2024/01/25
7581
如何编写可测试的代码:两个核心三个思路
java调用python的惨痛史(无法获
环境:java,was,python2.6,红帽linux,oracle,python用cx_Oracle         事情是这样的,有个需求,需要对数据库进行处理,简单说就是把数据取出来,用python使用外部传参做一个处理,再写回到数据库。如果使用java直接搞的话需要绕很大一个圈,比较麻烦,用python的话就很简单了,于是就有了下面的故事,希望和我遇到同样问题的同学能对你们有一些帮助,少绕一些圈子,java和python功能开发都很顺利,于是到了java调用python环节
py3study
2020/01/17
1.4K0
Python之函数基础
1、函数的定义与调用 函数从大方针上考虑总共分为两种:一种是内置函数,另一种是自定义函数。今天主要讲的是自定义函数。 s = '金老板小护士' #len(s) def my_len(): #自定义函数 i = 0 for k in s: i += 1 print(i) length = my_len() print(length) 此函数是为了计算字符串 's' 的长度。分析此函数的格式: 首先定义函数是def,这个是必须的,后面空一格,再写函数名称,定义函数名称
新人小试
2018/04/12
7680
python3--函数初识
函数能提高应用的模块性,和代码的重复利用率。已经知道python提高了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。
py3study
2018/08/02
5540
基于ThinkPHP的CMS审计思路
yxtcmf6.1是一个基于thinkphp3.2.3的cms,19年3月份发布,用来练习代码审计是个不错的选择。
FB客服
2020/07/15
2.3K1
基于ThinkPHP的CMS审计思路
python提升篇(六)---面向对象
动能:物体由于运动而具有的能量,称为物体的动能。它的大小定义为物体质量与速度平方乘积的二分之一。
用户5410712
2022/06/01
2280
Kotlin、Swift、Scala 的延迟求值
Kotlin 当中的 Lazy 想必大家都已经非常熟悉了,它其实承载的功能就是变量的延迟求值。今天我们同样来对比一下其他语言对于类似功能的实现。
bennyhuo
2020/06/16
1.9K0
舒服,给Spring贡献一波源码。
这周我在 Spring 的 github 上闲逛的时候,一个 issues 引起了我的兴趣。
why技术
2022/04/08
3390
舒服,给Spring贡献一波源码。
Python每日一题:关于闭包
学过其他语言,比如 Java ,对示例三的结果会比较惊讶,在 Java 中类似的情况,不会报错,会引用外部的全局变量,而如果在内部重新赋值后,再次使用则会用局部变量的值。而在 Python 中情况则不一样,它在编译函数时,发现对 b 有赋值的操作,它判定 b 是一个局部变量,所以在打印 b 时,它会去查询局部变量b,发现并没有赋值,所以会抛出异常。
用户7685359
2020/08/24
6080
Python每日一题:关于闭包
相关推荐
又一次变革,Vue 更彻底的拥抱了函数式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档