| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1293 人关注过本帖
标题:python中的类和函数的区别是什么?
取消只看楼主 加入收藏
wufaxian
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2021-9-19
结帖率:37.5%
收藏
已结贴  问题点数:5 回复次数:1 
python中的类和函数的区别是什么?
老师说:类是用来高效管理属性代码和行为代码的。类就相当于是对一个或多个函数的封装
程序代码:
class People:
      def _init_(self,N,A):
        self.name = N
        self.age = A
      def selfintro(self):
        print(f'大家好,我叫{self.name},今年{self.age}岁。')

P1 = People( 'Jack',12)
P2 = People( 'Paul', 11)

P1.selfintro()
P2.selfintro()

关于上面这段代码,有几个问题。
1、def _init_(self,N,A):这一段主要是定义对象属性。类和函数的主要区别就是类可以定义对象属性?进而可以Jack = People( 'Jack',12)来方便的实例化一个对象。使它也有相同“格式”的属性?这一点函数绝对无法实现的么?
2、老师说这一段 def selfintro(self): 是在定义行为。但是我的感觉就是在类里面嵌套了一个函数。然后是你可以在外面针对同一类对象调用这个函数,例如:P1.selfintro()。感觉这部分和函数调用没有任何区别,我理解对么?
3、为什么def _init_(self,N,A): 这一段就是定义属性,而def selfintro(self):就是定义行为。python解释器是怎么知道前一个是定义属性?后一个是定义行为?两句都是def 开头的啊。
4、上面代码为什么会在第五行报错?

[此贴子已经被作者于2022-7-8 22:21编辑过]

搜索更多相关主题的帖子: def 属性 函数 区别 定义 
2022-07-08 22:16
wufaxian
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2021-9-19
收藏
得分:0 
回复 楼主 wufaxian
————2022 年 7 月 9 日 15:03 更新 —————
看了很多不同论坛的回复,很有启发。也反思了一下自己的困惑到底是什么?
本人非计算机专业,入门语言是大学学的 C 语言。于是形成了一种惯性思维,什么都可以用函数解决。
看了 python 入门书,当中提到了类,面向对象。同时也参考了一些介绍面向对象编程的视频,文章。看后感觉似懂非懂。

所谓 “似懂”:我能看懂创建一个类,大致分两部分。
1、定义属性:似乎是做了一个数据模板 (好比是做糕点的模具、也可以看作做了一个标准化的机器人)。
2、定义方法:针对上面的机器人定义了一些针对机器人的命令,使机器人可以完成特定动作。跳,走。蹲……

实例化一个对象,好比用糕点模子拍面团。这样可以批量标准化的做出一样的糕点。也可以说批量化生产出一堆机器人。这些机器人诞生之日就可以自动支持标准指令 (类中已经定义好的方法)。

所谓 “非懂”。你非让我用 “类” 去编程,我也可以。但我感觉我在邯郸学步,只是做形式上的模仿,并没有体会到 “类” 的优点,便利。(之所有说优点,便利。是因为有人告诉我面向对象编程处理的问题,面向过程也都能解决。只是特定问题面向过程不如面向对象方便。)就是我觉得就用变量 + 函数,也可以实现上述效果。所以就会产生疑问,这地方为什么要用类,然后层层继承。看着眼晕。
类,似乎创建了一个私有的变量类型(定义属性)。且我为这个私有变量类型创建了特定的函数,即方法。
那我不用 “类” 这个工具,我以后创建同样类型变量的时候 Ctrl+c Ctrl+v 一下不就可以了。
另外类创建了一个模具可以批量的创建同样的私有变量(也就是实例化对象)。但是我真要批量的用类似 “P1 = People ( ‘Jack’,12)” 来实例化对象。也不会一行一行去手工敲代码。应该也是用循环语句或条件语句来创建吧。
考虑到一般大量的数据是放在数据库中的,完全可以通过给变量批量赋值来实现 “类” 批量制造标准的 “私有变量类型” 的目的。即通过赋值完成变量格式的定义。matlab 中有一种叫元胞数组的变量。它每个单元既可以装字符串,也可以装数值 (整数,浮点都可以)。非常灵活。以上面的代码为例。我不用事先定义一个 people 类。数据在数据库中已经有 name、age 两列了。我从数据库中调数据,赋值给元胞数组变量。这样不就相当于 “实例化对象” 了么?至于针对这也对象的方法。我就编写特定函数来处理,实现我的目标就可以了。这样做相对于使用 “类” 有什么不方便的么?我体会不到。所以说是 “非懂”

总之,在我看来类里定义属性就像创建变量。定义方法就像创建函数。类就是把这两者打包了。打包有什么好处?没体会。我就直接定义变量。针对变量编写函数。有什么不好?不知道。

————- 以上之所以把我的思考过程写出来,是因为我的困惑来自于我固有的看法,其中可能包含不少谬误。放在这里可以使各位老师的指导更有针对性。

2022-07-09 15:03
快速回复:python中的类和函数的区别是什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021131 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved