首页
学习
活动
专区
工具
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__函数。

64650

每当我们根据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() # 打印修改后的就餐人数 继承 当一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类...子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。 创建子类时,父类必须包含在当前文档中,且必须位于子类前面。必须在括号中指定继承的父类名称 #!...先尽可能在一个文件中完成所有工作,确定一切都能正确运行后,再将类移到独立的模块中。如果你喜欢模块和文件的交互方式,可在项目开始时就尝试将类存储到模块中。

    89120

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

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

    52320

    python 中的迭代器与生成器

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

    51330

    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

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

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

    1.1K20

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

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

    1.3K20

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

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

    38220

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

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

    46910

    关于“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。定义子类时,必须在括号内指定父类的名称。

    10710

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

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

    86520

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

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

    55930

    解开Python中self的四个秘密

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

    75210

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

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

    75630

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

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

    75010

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

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

    42520

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

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

    1.9K32
    领券