python 测试在 self 中定义的属性

杜布丹

我是 Python 面向对象编程的新手,有一个似乎很简单的问题,需要一些指导。

如果我有以下myclass正在初始化的对象self和文件路径fname

class myclass(object):
    def __init__(self, fname):
        self.fname = fname
        self.title = None
        self.geo_list = []

一切似乎都有效。

a = myclass('a')

a具有 中指定的三个属性__init__

但是如果我添加一行来检查以确保fname不是空白或None

class myclass(object):
    def __init__(self, fname):
        self.fname = fname
        self.title = None
        self.geo_list = []

    if self.fname == '' or self.fname is None:
        raise AttributeError('Filename passed is blank.')

我得到了名称错误:

name 'self' is not defined
罗宾·齐格蒙德

self 不是 Python 中的关键字,它只是一个本身没有意义的普通变量名。

但是有一个约定——据我所知是普遍遵循的,因此你应该遵循它——Python 类中每个方法的第一个参数都被称为self. 而这第一个参数确实有点特殊,因为无论何时调用该方法,对象本身(它是类的实例)都会作为第一个参数传入 - 然后是所有其他显式给出的参数。因此,当您放置时a = myclass('a'),该__init__方法将'a'作为第二个参数(您称之为fname)和a它本身作为第一个参数(按照惯例称为self被调用[显然它不是那样的,因为a直到__init__ 已经回来了,但我认为这是一种合理的看待方式。]

所以你只能self在方法内部访问,其中self应该始终是第一个参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章