从不同的类实例Var Python设置类实例Var的必要性

2024-10-02 02:40:07 发布

您现在位置:Python中文网/ 问答频道 /正文

自我在Parser.self.totalEntries中需要吗

class Iter(Parser):

def __init__(self, Parser):

    self.totalEntriesI = Parser.self.totalEntries

我已经放弃在文件里找了,也许我只是个傻瓜


Tags: 文件selfparserinitdefclassiter傻瓜
2条回答

简单的回答是:不,你不需要它

我试图理解你的代码,但这部分让我感到困惑:

def __init__(self, Parser):

然而,parser的大写字母p可能有点模棱两可:它可以表示从中继承的Parser类(在这种情况下,这个参数是无用的),也可以表示“作为参数给定的任何解析器”(在这种情况下,为了清楚起见,您可能需要将其小写)

假设您指的是一个特定的给定解析器,那么您可以重写所有解析器以获得以下内容:

def __init__(self, myLovelyParser):

self.totalEntriesI = myLovelyParser.totalEntries

这就更清楚了

self的唯一要点是为隐式实例参数提供绑定名称。 更具哲理的是:“从外部看,没有self

self参数(不需要,但应该这样调用)与被调用的对象相同。现在__init__有点特殊,但一般来说obj.method(args)cls.method(obj, args)相同,其中cls是obj的类。self没有什么比调用方法时自动插入更神奇的了。当然,__init__参数是正在构造的对象

换句话说,self(或first)参数就是调用方法的对象

您试图执行的操作有点不清楚(因为将参数命名为与方法的类相同有点混乱),但是self不是您想要访问其他对象时要做的,首先您还必须提供其他对象(例如作为参数)并以相同的方式访问它:

def method(self, other):
     self.attr = other.attr

请注意,other.self.attr将要求对象other具有一个名为self的属性,而它通常不具有该属性。因此,这样做通常是不正确的——无论如何,它与other.attr是完全不同的

相关问题 更多 >

    热门问题