鱼C论坛

 找回密码
 立即注册
查看: 3557|回复: 7

[知识点备忘] 第060讲:类和对象(III)

[复制链接]
发表于 2022-5-19 03:18:17 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-19 10:00:52 | 显示全部楼层
亲眼见证更新。。慢慢学起来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-27 20:39:29 | 显示全部楼层
绑定

为什么在之前例子中,需要加`self`呢?

这样做的目的是:实现实例对象和类的方法进行绑定。

看起来像是把自己的名字贴在一辆共享单车上面(好傻)有什么意义呢?

其实是因为:在实例中,类的方法确实是共享的,但是实例的属性却可以是自己的。

例:
class C:
    def set_x(self, v):
        self.x = v

        
c = C()
c.set_x(250)
c.x
>>>
250
# 现在c拥有了自己的属性,但是C的x还是没值的。
# 我们可以尝试给C的x属性一个值:
C.x = 100
C.x
>>>
100

c.x
>>>
250
# c的值还是250,和类没有关系 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2022-9-26 19:23:38 | 显示全部楼层
实例中类的方法是共享的,实例的属性却可以是自己的,独一无二,互不干扰,可通过__dict__进行内省来查看。“self”的作用就是将实例对象与类的方法进行绑定,从而通过类中的方法设置实例对象自己的属性,这也便解决了上一节课遗留下来的问题。虽然可以直接通过类来修改类属性,但这种做法很不提倡,因为所有从类生成的实例对象都共享该属性,修改后会牵一发而动全身,造成难以维护的bug,甚至可能比修改全局变量更危险!
视频最后还介绍了一个旁门左道的小技巧——定义一个最小的类,即除了pass语句之外什么都没有的空类。这样的类看似毫无价值,实则可以当作字典来使用,用修改类属性的方法即可实现,或通过空类生成的实例来模拟字典,方便快捷!由此可见,面向对象编程是一种高级的编程思想,虽非必须,但学好它就可以像造物者创造世界一样创造自己的程序,新奇好玩,充满乐趣!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-1-8 23:22:58 | 显示全部楼层
属性独立,方法共享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-25 20:14:01 | 显示全部楼层
除了继承还有方法改变类的属性和方法么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-5 20:26:08 | 显示全部楼层
视频为什么挂了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-10 13:54:56 | 显示全部楼层
类似这样去掉所有的self,为啥还会报错: takes 0 positional arguments but 1 was given
class Turtle():
    def say():
        print("小王八")      
class Cat():
    def say():
        print("小猫")
class Dog():
    def say():
        print("大狗")      
class Garden():
    t = Turtle()
    c = Cat()
    d = Dog()
    def say():
        t.say()
        c.say()
        d.say()

        
g = Garden()
g.say()
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    g.say()
TypeError: Garden.say() takes 0 positional arguments but 1 was given
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 16:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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