鱼C论坛

 找回密码
 立即注册
查看: 1932|回复: 5

[已解决]“类”中方法不理解

[复制链接]
发表于 2020-11-19 20:31:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题:不能理解为什么类的意义,不能理解以下这段代码的意义,类和普通的函数又有什么区别呢?(如果不定义CLASS)
class Fib(object):
    def __getitem__(self, n):
        if isinstance(n, int): # n是索引
            a, b = 1, 1
            for x in range(n):
                a, b = b, a + b
            return a
        if isinstance(n, slice): # n是切片
            start = n.start
            stop = n.stop
            if start is None:
                start = 0
            a, b = 1, 1
            L = []
            for x in range(stop):
                if x >= start:
                    L.append(a)
                a, b = b, a + b
            return L
最佳答案
2020-11-19 21:51:55
类和普通的函数区别不大  比如说 int()  str()  set()  dict() 也是类 还不是都被拿来当函数用的

类和普通的函数他们都有同样的泛型 typying.Callable ,基本的类实例化的时候可以包装对象 (字面量) 也就是{1,2,}和set([1,2])没区别

普通的函数也有类 是函数类实例化出来的

类也有类  类的类实例化也能诞生类

生成器类 这种类 并不是有个生成器类的类实例化出来  也不是继承生成器基类 而是属于一种泛型  只要实现了__iter__就算是生成器类 就是这个道理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-19 20:46:53 | 显示全部楼层
举个例子,你需要生成一个随机数,那你直接调用random这个类就好了。不需要自己再写生成随机数的代码。
简单点来说,类是方便以后你用到这段代码的时候能简便一些。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-19 21:02:21 | 显示全部楼层
类封装了多个函数,也封装了对象,还可以定义属性,非常之方便。
比如你定义了一个鱼类。你可以给鱼设置属性,比如长度、重量、颜色、性别、年龄,还可以在__init__()方法中初始化属性,还可以定义方法,比如游动、吃、睡。
你调用的时候,如果需要属性,例如长度:fish.len,调用方法:fish.eat()

如果你不想定义类也不是不行,长度、重量、颜色、性别、年龄你就要定义变量,每个动作游动、吃、睡都得写个函数,也可以实现

但是如果你的程序中如果要用多个鱼,用对象是不是会更方便一点?a = Fish() b = Fish(),调用起来不会混淆,更方便使用,a.len,b.len就行了。你用变量的形式也不是不可以,只是会很繁琐。。。所以说用类封装,更优雅、更便捷。。。但是如果你不想用类也不是不可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-19 21:33:05 | 显示全部楼层
实际上python的库都是用类来封装的,调用时就import xxx
如果把函数比作工具的话,类就是个工具箱。函数就是类的方法
把相关联的一系列工具都放进一个工具箱中
python就像一个乐高玩具,你组成了胳膊我组成了脚,需要什么就调用什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-19 21:51:55 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +2 鱼币

类和普通的函数区别不大  比如说 int()  str()  set()  dict() 也是类 还不是都被拿来当函数用的

类和普通的函数他们都有同样的泛型 typying.Callable ,基本的类实例化的时候可以包装对象 (字面量) 也就是{1,2,}和set([1,2])没区别

普通的函数也有类 是函数类实例化出来的

类也有类  类的类实例化也能诞生类

生成器类 这种类 并不是有个生成器类的类实例化出来  也不是继承生成器基类 而是属于一种泛型  只要实现了__iter__就算是生成器类 就是这个道理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-19 22:51:49 | 显示全部楼层
逃兵 发表于 2020-11-19 21:33
实际上python的库都是用类来封装的,调用时就import xxx
如果把函数比作工具的话,类就是个工具箱。函数就 ...

thx~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 21:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表