python中的self问题

img


这个代码中,self.f是什么意思?f是不是成员变量?如果是,为什么括号里面不出现?这个self后面的f是某个类名称的缩写还是突然冒出来的?还是默认的?

self后面的方法可以乱加吗?
2.那个if self.f:是什么意思?感觉不像判断语句啊?

问题点: self.f 是什么?
分析思路:FileMgr是一个类,那么self.f是类的属性, 它的传递方式可以通过 self.属性的方式来进行传递,一般在__init__方法里定义。
它可以在其他函数方法里赋值,比如读取文件时,它由初始值None被赋值为文件属性.
后续有个判断if self.f 实际含义是判断它有没有获取到文件属性,被赋值后,才能执行相应的文件操作.

self.是定义类的成员变量,双下划线开头的是魔术方法

  • self关键字的意思就是当前定义的类自己。比如您截图类中的self.f,就是您那个类中的“全局”变量,在类中任意地方都可以self.f调用。

  • 自定义的类有进入__enter__(self)和退出__exit__(self)的魔术方法,就可以用python 御用with来驱使,进入自动打开文件,退出时会自动关闭文件。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: Python在定义类方法时self的作用是什么?是否可以不写中的 self的作用 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,self.f 在上述代码中是指类的一个属性或实例变量。这个属性可以在类的各个方法中使用并且可以存储和访问不同的值。self 表示当前对象实例,而 f 是该实例的一个属性或变量名。

    关于括号的问题,self.f 中的括号不是必需的。括号通常用于方法调用,而在这种情况下,self.f 是一个属性或变量,没有执行方法的操作。

    self 并不是某个类的名称的缩写,而是约定俗成的表示当前对象实例的关键字。在定义类的方法时,第一个参数通常为 self,它指代了当前对象实例本身。

    在 Python 中,可以随意在类的方法后面添加新的方法。这是因为 self 实际上是一个指向类的引用,可以在该引用上添加新的属性和方法。

    if self.f 表示一个条件判断语句,其中 self.f 是一个表达式。在 Python 中,不仅可以使用布尔值作为条件,还可以使用其他类型的值。在这种情况下,self.f 的值将被解释为布尔值。如果 self.f 的值为真,则条件成立;否则,条件不成立。

    不过,根据您提供的代码截图来看,self.f__init__ 方法中是一个类的属性,并且它在 inspect 方法中被重新赋值为一个方法。因此,在条件语句 if self.f: 中,self.f 会根据赋值的不同而变化。如果 self.f 被赋值为一个方法,则条件判断为真,否则为假。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
  1. self是class FileMgr实例化后的对象本身。 当class在实例化的时候,会默认调用你这里的__init__函数,__init__里初始化了f作为对象的属性。在对象的函数内,都可以通过self.f进行调用。
  2. if self.f 是判断语句,在这里相当于if self.f is not None:。