转跳到内容

不得不说一步一步摸索编程还挺有乐趣的


推荐贴

语言是python。非科班出身,也没有系统学过计算机。起初第一次接触编程还是为了减少工作量(解放生产力),找了一圈发现python这种不用编译还能随便拉库来用的挺适合我。断断续续写了不少小工具,什么批量转格式改后缀改编码,都是十几或几十行代码的独立小脚本。

然后为了进一步减少工作量(怠惰是原罪),开始追求更完善的自动化,代码长度逐渐变得更多了(超过300行就挺难受了)。于是向gpt请教代码分类管理和模块化,把相对封闭/完善的小段代码单独放在其它的python文件里。

最近又遇到新的问题,好几个函数都需要传三四个参数,并且这些参数还总是固定的七八个参数里面的,总感觉模块化之后反而更复杂了(毕竟放在一个文件里作为全局变量就省的传参了)。于是再次向gpt请教,gpt再次抛给我一个炸裂性的概念(对我而言)——用类(class)封装属性和函数。虽然定义看的懵懵懂懂的,给的例子看似浅显但是感觉也挺抽象的。不过不妨碍我拿来用,这下大大优化了我的项目,不得不说gpt真是最好的的老师。

目前我的学习进度就这么多了, 或许以后还会学到更多的东西(

希望有计算机高手坛友给点锐评,让我少走点弯路(但是不想系统性学习)。最后放个gpt给的例子:

(虽然全文一直在说gpt,其实我用的是deepseek和claude-3.5-s)

引用

类的基本结构

一个类通常包含以下几个部分:

  1. 属性(Attributes):类的数据成员,用于存储对象的状态。
  2. 方法(Methods):类的函数成员,用于定义对象的行为。
  3. 构造函数(Constructor):一种特殊的方法,用于初始化新创建的对象。
  4. 析构函数(Destructor):一种特殊的方法,用于在对象被销毁时执行清理操作。

定义一个类

以下是一个简单的Python类的例子:

class Dog:
    # 类属性
    species = "Canis familiaris"

    # 构造函数
    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age = age

    # 实例方法
    def description(self):
        return f"{self.name} is {self.age} years old."

    def speak(self, sound):
        return f"{self.name} says {sound}"

创建对象(实例化)

使用类创建对象的过程称为实例化。实例化一个类时,会调用类的构造函数来初始化对象。

my_dog = Dog("Buddy", 3)
print(my_dog.description())  # 输出: Buddy is 3 years old.
print(my_dog.speak("Woof Woof"))  # 输出: Buddy says Woof Woof

类的优点

  1. 封装(Encapsulation):将数据和操作数据的方法封装在一起,提高了代码的模块性和可维护性。
  2. 继承(Inheritance):允许一个类继承另一个类的属性和方法,促进了代码的重用。
  3. 多态(Polymorphism):允许不同类的对象通过相同的接口调用,提高了代码的灵活性。

使用类的场景

类适用于需要创建多个具有相似属性和行为的对象的场景。例如,在一个学生管理系统中,可以定义一个 Student 类,每个学生对象都有姓名、年龄、成绩等属性,以及注册课程、查看成绩等方法。

通过使用类,可以将复杂的问题分解成更小、更易于管理的部分,从而提高代码的可读性和可维护性。

 

链接到点评

以前学过一些单片机的编程,感觉对于非科班的人来说用啥学啥就好,编程要用的函数和会根据工作对象和预期目标有很大差别。真想学的话就把基础的比如迭代循环指针(不知道python有没有)按教科书讲的搞明白,剩下的很多库函数只需要用到的时候再认识它们的用法即可。然后让ChatGpt按照你提供的工作内容和优化方向给一段码农常用代码模板就好

链接到点评
8 小时前,starr说道:

以前学过一些单片机的编程,感觉对于非科班的人来说用啥学啥就好,编程要用的函数和会根据工作对象和预期目标有很大差别。真想学的话就把基础的比如迭代循环指针(不知道python有没有)按教科书讲的搞明白,剩下的很多库函数只需要用到的时候再认识它们的用法即可。然后让ChatGpt按照你提供的工作内容和优化方向给一段码农常用代码模板就好

py不算底层语言我还没怎么接触过指针,不过for while循环还是会的。gpt最大的帮助其实是告诉我各种库/函数的用法,代码最核心的逻辑还是得自己慢慢构思(真的头秃),

还有看过很多大佬的python项目,越发觉得自己写的就是一坨(

8 小时前,光之凌志说道:

先天编程牛马圣体,等你什么时候py配置环境配了一下午就不会这么想了

之前用gradle还真配了好几天的环境,刚开始甚至卡在网络这一关,梯子开全局,换http/socks,甚至换了好几家机场都没用:397604175_SSB(3):项目也是六七年没更新的,gradle,gradle插件,jdk,as版本怎么搭配都不对,最后突发奇想全部换成当年主流的版本才成功

链接到点评
于 2024/7/8 于 PM3点24分,acips说道:

不想系统性学习

如果阁下想要长期编程来实现自己的目标的话,肯定是要系统性学习的,如果只是要完成当前手头的一两个目标直接找ai就行了,ai现在的编程力确实够强。

于 2024/7/8 于 PM3点24分,acips说道:

用类(class)封装属性和函数

顺便恭喜阁下从面向过程编程进化到了面向对象编程

链接到点评

推荐使用VS2022+github copilot插件

每月10美金即可解放大脑,无脑相信AI的写法就完事了,除非跑出来有问题。

话说我就写过一两个项目的python,这玩意最让我头痛的就是你删几行代码马上整个文件就开始报错,这时候智能提示就失效了,你大概率需要重开IDE才能恢复正常:YangTuo_21:

话说面向对象编程的话类不是应该是很早就会接触到的概念吗……你就把你要处理的业务想象成一个抽象的实体,然后这个实体需要有哪些行为就封装成一个函数,比如一个Human类有Eat(){} Drink(){}方法,他有哪些属性就定义哪些成员变量,比如age, heigth, weight什么的。不过说起来如果只是编写小工具其实根本不需要学什么编程基础。

链接到点评
  • 攸薩锁定了本主题
游客
此主题已关闭。
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款