如何调用类内的函数?

2024-11-28 08:37:00
admin
原创
11
摘要:问题描述:我有这段代码,用于计算两个坐标之间的距离。这两个函数都属于同一个类。distToPoint但是,如何在函数中调用该函数呢isNear?class Coordinates: def distToPoint(self, p): """ ...

问题描述:

我有这段代码,用于计算两个坐标之间的距离。这两个函数都属于同一个类。

distToPoint但是,如何在函数中调用该函数呢isNear

class Coordinates:
    def distToPoint(self, p):
        """
        Use pythagoras to find distance
        (a^2 = b^2 + c^2)
        """
        ...

    def isNear(self, p):
        distToPoint(self, p)
        ...

解决方案 1:

由于这些是成员函数,因此将其作为实例上的成员函数调用self

def isNear(self, p):
    self.distToPoint(p)
    ...

解决方案 2:

这样做不行,因为distToPoint它在你的类中,所以如果你想引用它,你需要在它前面加上类名,像这样:classname.distToPoint(self, p)。但是你不应该这样做。更好的方法是直接通过类实例(类方法的第一个参数)引用该方法,如下所示:self.distToPoint(p)

解决方案 3:

在 OP 中,distToPoint()isNear()都是实例方法,因此,它们都将对实例(通常名为self)的引用作为其第一个参数。当直接从实例调用实例方法时,引用是隐式传递的,因此

self.distToPoint(p)

作品。


如果您想从子类调用重写的父方法,则super()可以/应该使用。在下面的例子中,方法在和类greet()中都定义,如果您想调用的,规定的方式是通过,即。也可以通过类名来实现,但有很多反对这种硬编码的论点,比如灵活性、正确使用方法解析顺序的能力等。Parent`ChildParentgreet()super()super().greet()Parent.greet(self)super()`

class Parent:
    def greet(self):
        print("greetings from Parent!")
        
    def parent_printer(self):
        print("this is parent printer")
        
class Child(Parent):
    def greet(self, parent=False):
        if parent:
            super().greet()                 # Parent's greet is called
        else:
            print("greetings from Child!")
        
    def printer(self, greet=True):
        if greet:
            self.greet()                    # Child's greet is called
        else:
            self.parent_printer()           # Parent's parent_printer is inherited
        
        
c = Child()
c.greet()                # greetings from Child!
c.greet(parent=True)     # greetings from Parent!
c.printer()              # greetings from Child!
c.printer(greet=False)   # this is parent printer

解决方案 4:

在上述场景中,您尝试从同一个类中定义的另一个成员方法访问成员方法。

为了实现这一点,您必须 distToPoint(self, p)像这样使用 self 关键字:从self.distToPoint(self, p)调用 distToPoint(self, p)方法isNear(self, p)

希望这有帮助。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   649  
  如何借鉴华为IPD体系优化企业研发?在当今竞争激烈的市场环境中,企业要想保持技术领先和产品竞争力,必须拥有一套高效且严谨的研发管理体系。华为作为全球领先的ICT解决方案提供商,其集成产品开发(IPD, Integrated Product Development)体系与质量管理体系(如ISO 9000系列)的融合实践,...
IPD项目管理   0  
  IPD流程图的7种经典绘制方法详解在产品开发领域,集成产品开发(Integrated Product Development,简称IPD)流程被广泛应用,以提高产品开发的效率和质量。IPD流程图作为这一流程的可视化工具,其绘制方法至关重要。本文将详细介绍七种经典的IPD流程图绘制方法,帮助项目管理人员和团队更好地理解和...
IPD研发管理体系   0  
  IPD流程:企业创新管理的核心引擎在当今快速变化的市场环境中,企业要想持续保持竞争力,就必须不断进行创新。而IPD(Integrated Product Development,集成产品开发)流程作为一种先进的产品开发管理模式,正逐渐成为众多企业提升创新能力、加速产品上市速度、降低开发成本的重要选择。本文将深入探讨IP...
IPD管理   0  
  IPD流程与传统产品开发流程的概述在产品开发领域,企业不断寻求高效、系统的管理方法以确保产品能够顺利从概念转化为市场成功的产品。集成产品开发(Integrated Product Development,简称IPD)流程与传统产品开发流程是两种截然不同的管理理念和方法。传统产品开发流程往往以职能部门为核心,各部门按顺序...
IPD流程中PDCP是什么意思   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用