首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当调用另一个文件中的类方法时,我们必须为self提供值吗?

当调用另一个文件中的类方法时,我们必须为self提供值。

在Python中,当调用类方法时,第一个参数通常被命名为self,它表示当前实例对象。当我们调用类方法时,需要将实例对象作为第一个参数传递给self,以便方法能够访问和操作该实例对象的属性和方法。

如果我们调用另一个文件中的类方法,同样需要提供self的值。这可以通过创建该类的实例对象,并将其作为参数传递给类方法来实现。例如:

代码语言:txt
复制
# File1.py
class MyClass:
    def my_method(self):
        print("Hello, World!")

# File2.py
from File1 import MyClass

my_instance = MyClass()
my_instance.my_method()

在上面的例子中,我们在File2.py文件中导入了File1.py中的MyClass类。然后,我们创建了MyClass的实例对象my_instance,并调用了my_method方法。在调用my_method方法时,我们将my_instance作为self参数传递给该方法。

需要注意的是,如果类方法不需要访问和操作实例对象的属性和方法,可以将其定义为静态方法(使用@staticmethod装饰器),此时不需要提供self参数。

总结:

  • 当调用另一个文件中的类方法时,需要为self提供值。
  • 可以通过创建类的实例对象,并将其作为参数传递给类方法来提供self的值。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python迭代器详解

Python迭代器可以被定义: 一个实现了__iter__()方法对象; 通过调用__next__()方法来逐个访问容器元素。...StopIteration 在这个示例我们创建了一个称为"MyIterator",它包含了一个列表和一个索引。...读取大型文件数据 当我们需要处理大量数据,将整个数据集加载到内存可能会导致程序崩溃或效率低下。...特殊方法解释器工作方式对象接收到一个消息,但在该对象上没有对应方法,会自动查找并调用该对象所在特殊方法,从而实现对该消息处理。...这就是魔法函数实现原理:创建对象,会自动调用__init__魔法函数进行初始化操作;需要获取对象字符串表示,会自动调用__str__函数。

61950

每当我们根据Dog创建实例,都只需给最后两个形参(name和age)提供。 定义两个变量都有前缀self。以self前缀变量都可供所有方法使用。 ?...Python使用实参'jack'和4调用Dog方法__init__()。方法__init__()创建一个表示特定小狗示例。使用我们提供来设置属性name和age。...在Dog引用这个属性,使用self.name。 ? 1.2.2调用方法 根据Dog创建实例后,就可以使用句点表示法来调用Dog定义任何方法。...这个方法接受一个里程,并将其存储到self.odometer_reading我们调用了update_odometer(),并向它提供了实参23(该实参对应于方法定义形参mileage)。...子类方法__init__()需要父帮助。 ? 输出: ? 创建子类,父必须包含在当前文件,且位于子类前面。定义了子类ElectricCar。定义子类必须在括号内指定父名称。

1.5K10
  • python

    因为python调用这个,_init_()方法来创建Dog(),将自动传入实参self。每个与相关联方法调用都自动传递实参self,它是一个指向实例本身引用,让实例能够访问属性和方法。...我们创建Dog实例,python将调用Dog方法_init_()。我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。...每当我们根据创建实例,都只需给最后两个形参(name和age)提供。接下来定义两个变量都有前缀self。以self前缀变量都可供所有方法使用,我们还可以通过任何实例访问这些变量。...遇到这行代码,python使用实参'willie'和6调用Dog方法_init_()。方法_init_()创建一个表示特定小狗示例,并使用我们提供来设置属性name和age。...在有些情况下,如果设置默认,在方法_init_()内指定这种初始是可行;如果你对某个属性这么做了,就无需包含提供初始形参。

    1.9K10

    Python3

    Python每个属性都必须有初始。可以在__init__()方法某个属性设置默认初始,此时无需包含提供初始形参。...函数称为方法,Python方法必须有一个参数,该参数是实例化对象自身引用,该参数通常命名为self,且该参数必须放在参数列表第一个位置。...(4) # 通过方法递增修改属性 new_restaurant.print_numbers() # 打印修改后就餐人数 继承 一个继承另一个,它将自动获得另一个所有属性和方法:原有的称为父...子类继承了父所有属性和方法,同时还可以定义自己属性和方法。 创建子类,父必须包含在当前文档,且必须位于子类前面。必须在括号中指定继承名称 #!...先尽可能在一个文件完成所有工作,确定一切都能正确运行后,再将移到独立模块。如果你喜欢模块和文件交互方式,可在项目开始就尝试将存储到模块

    88920

    Python __.call()__ 方法:创建可调用实例

    __call__() 提供了运行计数递增操作快速快捷方式。这一特性提供了一个方便用户友好界面。 上例 .__call__() 方法不带任何参数。该方法也不返回显式。...__init__() 参数与构造函数参数相同,它们通常实例属性提供初始。 同时,.__call__() 方法将实例转化为可调用对象。...缓存计算调用实例另一个常见用例是当我们需要在调用之间缓存计算数据有状态可调用实例,需要优化某些算法,这将非常方便。 例如,我们想计算一个给定数字阶乘。...__call__() 方法是唯一方法,因为它实现了可调用实例。 .__call__() 另一个用例是需要在 Python 实现策略设计模式。在这种情况下,可以利用 ....编写基于装饰器 Python 装饰器是可调用,它将另一个调用方法作为参数并扩展它行为,而不显式地修改它代码。装饰器提供了一个很好工具来现有的可调用程序添加新功能。

    46920

    python 迭代器与生成器

    引言 在此前文章我们介绍过迭代器模式 迭代器模式是一种十分常用行为设计模式,各种面向对象编程语言大多提供了迭代器模式实现和具体工具,迭代器主要用来按需要顺序顺次获取容器数据项。...判断对象是否可迭代 遇到迭代场景,Python 解释器会自动以该对象参数调用内置 iter 方法。...那么,如何避免这些我们在顺次迭代过程并不关心复杂性呢?使用统一对象封装,提供一套简单、抽象迭代方法是一个十分优雅解决方案,这正是迭代器模式所做。...生成器返回 既然生成器函数是一个函数,那么这个函数可以 return 某个?...在大数据量场景下,迭代器、生成器表达式、生成器函数是非常好解决方案。 8. 生成另一个生成器 — yield from 有时我们需要在我们生成器函数中生成另一个生成器或迭代器

    50730

    27 个问题,告诉你Python为什么这么设计

    一个是性能:知道字符串是不可变,意味着我们可以在创建它分配空间,并且存储需求是固定不变。这也是元组和列表之间区别的原因之一。 另一个优点是,Python 字符串被视为与数字一样“基本”。...任何动作都不会将 8 更改为其他,在 Python ,任何动作都不会将字符串 "8" 更改为其他。 为什么必须方法定义和调用显式使用“self”? 这个想法借鉴了 Modula-3 语言。...这对于 __init__() 方法非常有用,特别是在派生方法想要扩展同名方法,而必须以某种方式调用方法。 最后,它解决了变量赋值语法问题:为了 Python 局部变量(根据定义!)...没有实现映射有get()或key()方法,或者不是文件有write()方法我们偶尔会感到困惑。...从Python 1.6开始,字符串变得更像其他标准类型,添加方法,这些方法提供功能与始终使用String模块函数提供功能相同。

    6.7K11

    python简明笔记

    它需要两个参数,第一个参数是文件路径或文件名,第二个是文件打开模式(默认模式只读模式,也就是说如果你不提供任何模式,open() 函数将会以只读模式打开文件)。...如果没有指定 size 或者指定为负数,就会读取并返回整个文件文件大小当前机器内存两倍,就会产生问题。反之,会尽可能按比较大 size 读取和返回数据。...__getattr__ 正常情况下,当我们调用方法或属性,如果不存在,就会报错。...: if attr=='score': return 99 调用不存在属性,比如score,Python解释器会试图调用__getattr__(self, 'score')来尝试获得属性,这样...__call__ 一个对象实例可以有自己属性和方法,当我们调用实例方法我们用instance.method()来调用。能不能直接在实例本身上调用呢?在Python,答案是肯定

    2.2K90

    和函数傻傻分不清楚?三个例子讲明白

    简单来说Python没有可以完全表达我们要表示内容数据类型,那么就需要使用一个。来看下面的例子。 如果我正在计算某人年龄,则只需使用int 因为它可以满足我需求。...该方法将字段作为参数,并将它们作为对象属性赋值。self是一个特殊参数(名称不保留;它可以被称为任何东西),它是对对象本身引用。是一种从同一对象其他方法内部访问属性和方法方法。...当我们从对象外部访问它们(要使用play方法将执行此操作),则可以使用在该范围内对象指定任何名称。...无需从外部检查对象是否具有某些字段并决定如何处理这些内部字段,而是调用play对象提供方法,并在每个内部定义该类型对象应如何实现此功能。...“可重用性”意味着我们可以在其他应用程序重用之前代码。如果我们在自己文件编写了,则只需将其放在另一个项目中即可使其工作。

    1.1K20

    使用XML-RPC共享文件(1):初次实现

    避免循环(A向B请求,B又反过来向A请求),同时避免形成过长请求链(A向B请求,B向C请求等,直到向Z请求),向节点查询必须提供历史记录。...4.初次实现 要编写Node(系统单个节点,即对等体)第一个原型,必须对模块xmlrpc.serverSimpleXMLRPCServer工作原理有些了解。...如果提供密码不同于(启动指定self.secret,fetch将直接返回FAIL;否则它将调用query来获取指定文件。但方法query该返回什么呢?...调用query,你希望能够知道查询是否成功,并在成功返回指定文件内容。...为此,在另一个终端运行如下命令: python simple_node.py http://localhost:4243 files2 secret2 如你所见,这个对等体提供位于另一个目录文件

    1.1K20

    我要偷偷学Python,然后惊呆所有人(第二天)

    然后在另一个地方,准确说是另一个文件里面,调用这个函数,当时我听得一愣一愣,连录屏都忘了录,等到我自己实操时候。。。 传什么?传到哪里???晕死。。。...def就相当于告诉编译器:我这里是一个函数,你注意一下哈 任何传入参数必须放在圆括号中间,关于这个参数规矩嘛: 1、在调用函数,对函数进行参数传递必须与函数声明时参数列表对应。...self作用相当于先给实例占了个位置,等到实例创建好就“功成身退,退位让贤”。 同理,如果想在方法内部调用其他方法我们也需要用到self来代表实例。...初始化方法作用在于:每个实例对象创建,该方法代码无须调用就会自动运行。...小tip:就近原则:越靠近子类(即越靠左),越亲近,越优先考虑。子类调用属性和方法,会先在靠左里找,找不到才往右找。

    37420

    Python学习手册--第六部分()

    我们在该方法定义了三个形参:self、name、age,形参self必不可少,还必须位于其它形参前面,为何必须方法定义形参self呢?...,并将张三和20作为实参进行传递,此时Python使用实参张三和20调用Person_init_(),该方法通过我们传递过去参数创建了一个Person实例,并使用我们提供来设置属性name...在有些情况下,如设置默认,在方法__init__() 内指定这种初始是可行;如果你对某个属性这样做了,就无需包含提供初始形参。...创建子类,父必须包含在当前文件,且位于子类前面。接下来我们定义了Dog,定义子类必须在括号内指定父名称,方法_init_()接收创建Animal所需参数。...遵循Python总体理念,应让文件尽可能整洁。在这方面提供帮助,Python允许你将存储在模块,然后在主程序中导入所需模块。

    46610

    关于“Python”核心知识点整理大全20

    在这个方法访问属 性我们使用了self.make、self.model和self.year。在3处,我们根据Car创建了一个实 例,并将其存储到变量my_new_car。...接下来,我们调用方法get_descriptive_name(),指出我 们拥有的是一辆什么样汽车: 2016 Audi A4 9.2.2 给属性指定默认 每个属性都必须有初始,哪怕这个是...在2处,我们调用了update_odometer(),并向它提供了 实参23(该实参对应于方法定义形参mileage)。...9.3 继承 编写,并非总是要从空白开始。如果你要编写另一个现成特殊版本,可使用 继承。一个继承另一个,它将自动获得另一个所有属性和方法;原有的称为父, 而新称为子类。...创建子类,父必须包含在当前文件,且位于子类前面。 在2处,我们定义了子类ElectricCar。定义子类必须在括号内指定父名称。

    10010

    Python3笔试实际操作基础3.md

    它总会被绑定在其归属上,同时它第一个参数是本身(记住:类同样是对象) 抽象方法在一个基定义,但是可能不会有任何实现。在 Java ,这被描述一个接口方法。 #!...,那就是对象被实例化时,使用 Python 提供 abc 模块。...但执行第一个语句时候需要导入另一个文件(from b import y),因此 CPU 会转而去加载另一个文件(b.py)。...site-packages 文件夹之后就能直接进行调用; 分一个文件夹是普通文件夹还是包,看文件是否有 init.py 文件 必须在包文件创建一个 init.py 模块文件,内容可以为空。...定义一个 Nstr,该类实例对象间发生加、减、乘、除运算,将该对象所有字符串 ASCII 码之和进行计算: # 注意我们必须要用到 __new__ 方法,因为 str 是不可变类型 # 所以我们必须在创建时候将它初始化

    85620

    3.Python3扩展知识之笔试操作总结(三)

    它总会被绑定在其归属上,同时它第一个参数是本身(记住:类同样是对象) 抽象方法在一个基定义,但是可能不会有任何实现。在 Java ,这被描述一个接口方法。 #!...,那就是对象被实例化时,使用 Python 提供 abc 模块。...但执行第一个语句时候需要导入另一个文件(from b import y),因此 CPU 会转而去加载另一个文件(b.py)。...site-packages 文件夹之后就能直接进行调用; 分一个文件夹是普通文件夹还是包,看文件是否有 init.py 文件 必须在包文件创建一个 init.py 模块文件,内容可以为空。...定义一个 Nstr,该类实例对象间发生加、减、乘、除运算,将该对象所有字符串 ASCII 码之和进行计算: # 注意我们必须要用到 __new__ 方法,因为 str 是不可变类型 # 所以我们必须在创建时候将它初始化

    54130

    解开Pythonself四个秘密

    您通过一些示例学习它,您将注意到在Python定义许多函数都将self作为它们第一个参数。...继续上一节展示示例,当我们使用实例student调用greet()函数,这个函数通常被称为实例方法——一个对某个实例可用函数。但是,如果我们检查这个属性类型,就会显示一些不同东西。...实例不会直接实现这些函数。相反,它们将具有与实现相应函数绑定相同属性(即实例方法)。 ? 3.self是一个关键词? ?...然而,我们可以在定义函数上下文之外使用self作为变量名,这表明它在Python不是保留关键字。 ? 4. 我们必须在这些函数声明中使用self? ?...如前所述,实例teacher调用say_hello()方法,发生事情是执行teacher .say_hello()函数,并将实例对象teacher和' John '设置函数调用

    73910

    《Learning Scrapy》(中文版)第8章 Scrapy编程

    我们触发d调用callback方法),延迟项called状态变为True,result属性变为调用: >>> # Experiment 2 >>> d = defer.Deferred()...当你调用某个方法,你必须有每个可能要用到延迟项(相当于前面的故事里,在CRM系统设定步骤和过程)。你reactor.run()监控事件并触发调回。...信号是一个基本Scrapy API,它可以允许系统中有事情发生,进行调用,例如,一个Item被抓取、丢弃,或一个爬虫打开。有许多有用预先定义信号,我们后面会讲到。...信号 信号提供了一个可以给系统中发生事件添加调用机制,例如、打开爬虫,或是抓取一个Item。你可以使用crawler.signals.connect()方法连接它们(例子见下章)。...你必须阅读源代码,查看这些是如何使用。最好方法是,采用一个现有的程序,然后改造成你

    75030

    笨办法学 Python · 续 练习 13:单链表

    在 Python 我们将映射这些概念,如下所示: 节点只是一个定义对象。 指针(边)只是节点对象实例变量。 控制器是另一个简单,它使用节点存储所有内容并构建数据。...当你将汽车push到SingleLinkedList控制器上,它将处理在一个节点内部链表,来将其存储在最后。 注 Python 有个相当好用并且快速list,为什么我们要这么做呢?...查看操作最简单方法是,查看SingleLinkedList框架版本: class SingleLinkedList(object): def __init__(self):...查看SingleLinkedList函数列表,来查看每个操作以及如何使用注释。 测试 我现在要向你提供测试,实现这个,你必须使其能够工作。...记住,尽管如此,你也可以对__init__每个调用搞这么做。 最后,当你到达test_push函数末尾,你就完成了,并且已经完成了它调用每个函数递归检查。

    42020

    谈谈你是怎么理解面向对象

    调用同名方法:parent::say(); ②使用名(和self)调用静态属性,静态方法,以及常量。...如果空,则创建对象并返回;如果不为空则直接返回。 ③实例对象属性以及获取对象方法必须都是静态。 ④之后,创建对象只能使用我们提供静态方法。...常用方法小结 1、使用=讲一个对象,赋值给另一个对象,赋实际是对象地址。 两个对象指向同一地址,所以一个对象改变,另一个也会变化。...实例化一个未声明,自动调用。传递实例化名,可以使用名自动加载对应文件。 抽象和抽象方法  1、什么是抽象方法? 没有方法体{}方法必须使用abstract关键字修饰。...(抽象是一个不完整,里面的抽象方法没有方法体,所以不能实例化) ② 抽象子类继承提供一种规范,子类继承一个抽象,则必须包含并且实现抽象已定抽象方法。 接口 1、什么是接口?

    73210

    非常全通俗易懂 Python 魔法方法指南

    而是定义了当对象被垃圾回收行为。对象需要在销毁做一些处理时候这个方法很有用,比如 socket 对象、文件对象。...__trunc__(self) 调用 math.trunc(self) 时调用方法, trunc 应该返回 self 截取到一个整数类型(通常是long类型)。...定义你自己数值类型或字符串类型,你可能想提供某些特殊格式化选项,这种情况下这个魔法方法会非常有用。 __hash__(self) 定义对实例调用 hash() 行为。...协议类似某些语言中接口,里面包含是一些必须实现方法。在Python,协议完全是非正式,也不需要显式声明,事实上,它们更像是一种参考标准。 为什么我们要讲协议?..." 不是字典一个键,试图访问 d["george'] 就会调用 d.

    1.9K32
    领券