python中类的函数的调用

2023-11-20

    这里要考虑的重要事项是您正在使用的变量和/或函数名称的范围。 全局范围意味着
一切都可以看到它,无论是在顶层,在函数内部,还是在一个类中的方法内部。
    本地范围意味着它已锁定在该块的上下文中,并且块外的任何内容都无法看到它。在
您的情况下,该块是一个函数。
    
1、以Student类为例,在Python中,定义类如下:

class Student(object):
    pass


2、实例:定义好了类,就可以通过Student类创建出Student的实例,创建实例是通过类
名+()实现:

student = Student()

3.类起模板作用,属性写死,属性也可成变量方法:
Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑
上去:

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

实际应用:

>>>student = Student("Hugh", 99)
>>>student.name
"Hugh"
>>>student.score
99

4、在类中的函数调用类中的属性。
    既然Student类实例本身就拥有这些数据,那么要访问这些数据,就没必要从外面的
函数去访问,而可以直接在Student类的内部定义访问数据的函数(方法)

class Student(obiect):
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def print_score(self):
        print "%s: %s" % (self.name, self.score)

>>>student = Student("Hugh", 99)
>>>student.print_score
Hugh: 99

5、self代表类的实例
(1)self代表的是类的实例。而self.__class__则指向类。

class Test:
    def ppr(self):
        print(self)
        print(self.__class__)

t = Test()
t.ppr()


执行结果:

<__main__.Test object at 0x000000000284E080>
<class '__main__.Test'>

    注意:把self换成this,结果也一样,但Python中最好用约定俗成的self。
    在Python解释器的内部,当我们调用t.ppr()时,实际上Python解释成Test.ppr(t),
【报错】的例子如下:

class Test:
    def ppr():
        print(self)
t = Test()
t.ppr()
命令行如下:
Traceback (most recent call last):
  File "cl.py", line 6, in <module>
    t.ppr()
TypeError: ppr() takes 0 positional arguments but 1 was given

        运行时提醒错误如下:ppr在定义时没有参数,但是我们运行时强行传了一个参数。
由于上面解释过了t.ppr()等同于Test.ppr(t),所以程序提醒我们多传了一个参数t。
(2)不用self,类中函数参数不一定要必须有self,【1】有参数可以使用
@classmethod类方法【2】无参数直接调用
【1】中的

class Test:
    @classmethod
    def ppr(cls):
        print(__class__)
Test.ppr()、、
运行结果:
<class '__main__.Test'>

【2】中的

class Test:
    @classmethod
    def ppr():
        print(__class__)
Test.ppr()

运行结果:
<class '__main__.Test'>

同一个类中同级函数的相互调用:

class DemoSpider(scrapy.Spider):
    def parse(self, response):
        self.slideBlank()
    def slideBlank(self):
        pass

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中类的函数的调用 的相关文章

随机推荐

  • 第六篇:进阶篇 车内的吸声性能及测试方法

    本专栏分享传统NVH知识点 从声学理论 材料声学 汽车噪声振动分析 车辆及其零部件甚至原材料的声学测试方法等多维度介绍汽车NVH 一些专用术语同时给出了中英文对照 欢迎新人 同行 爱好者一起交流 由于内容写的较为仓促 有误的地方欢迎大家批评
  • 【安装】win下的openvino安装及onnx模型转换.xml和.bin

    安装文档参考 openvino安装指导 包含相应依赖的安装 三步到位 我装的是python3 8 vs2019 cmake3 24 0 一般最新版本 这几个安装及注意的细节在文档中都有描述 一定一定要按上述文档安装 并且细节要注意 尤其是o
  • 一道面试题:JVM老年代空间担保机制

    面试问题 昨天面试的时候 面试官问的问题 什么是老年代空间担保机制 担保的过程是什么 老年代空间担保机制是谁给谁担保 为什么要有老年代空间担保机制 或者说空间担保机制的目的是什么 如果没有老年代空间担保机制会有什么不好 下面我们就带着这些问
  • Nuttx操作系统(三):构建模式

    1 1 Nuttx构建配置以及模式 Nuttx有三种不同的构建配置 FLAT构建 这种构建是所代码驻留在公共地址空间中 1 应用 内核以及board logic在一个flat地址环境中 2 所有的地址空间具有相同的属性 PROTECTED构
  • expected primary-expression before 'unsigned' 解决方案

    问题描述 语句result unsigned int 1 lt lt i 在本地可以编译运行 但是上传至LeetCode后出现编译错误 expected primary expression before unsigned 分析 语句太复杂
  • 【MedusaSTears】复杂定时任务SpringBoot+Quartz实例,解决jobclass如何注入一个service类,以及实现简单业务逻辑

    目录 吃水不忘挖井人系列 1 认识了解各种定时任务实现方式 2 本文主要参考 3 其他参考 一 业务需求 这里提一下我对 Scheduled和Quartz的一点小看法 如有误解还请指正 二 软件环境 java版本 SpringBoot版本
  • Ubuntu环境下使用APT安装Jenkins(详细教程)

    目录 1 安装JDK 1 1 使用APT查找已安装的JDK 1 2 若没有JDK11 则需要安装 2 使用war包或者APT两种安装方式 2 1 war包安装 推荐 方法简单 配置使用JDK 2 2 APT安装 3 配置Jenkins 3
  • 人工智能数学基础:利用导数判断函数单调性、凹凸性、极值、最值和描绘函数图形

    一 单调性判断定理 定理 设函数y f x 在 a b 上连续 在 a b 内可导 1 如果在 a b 内f x 0 且等号仅在有限多个点处成立 那么函数y f x 在 a b 上单调增加 2 如果在 a b 内f x 0 且等号仅在有限多
  • java 常见的异常大集合

    算术异常类 ArithmeticExecption 空指针异常类 NullPointerException 类型强制转换异常 ClassCastException 数组负下标异常 NegativeArrayException 数组下标越界异
  • Java多线程 - 线程池常用容量设置

    线程执行方式 线程的执行是由CPU进行调度的 一个CPU在 同一时刻只会执行一个线程 操作系统利用了时间片轮转的方式 CPU给每个任务都服务一定的时间 然后把当前任务的状态保存下来 再加载下一个任务的状态后 继续服务下一个任务 任务的保存及
  • Android Studio卸载以及安装教程

    手把手教学安卓安装 一 卸载教程 如果是第一次安装 直接看往下翻 1 先把Android Studio卸载2 将安装残余一起卸载 一定要卸载干净 否则在二次安装时会出现一大堆问题 a b c 好啦 到这里 所有的残余都已经删除干净 下面进入
  • opengl光线跟踪算法_计算机图形中的光线追踪(ray tracing)概念

    这是对MIT Foundation of 3D Computer Graphics第20章的翻译 本章讲解了光线追踪 ray tracing 技术的基础知识 本书内容仍在不断的学习中 因此本文内容会不断的改进 若有任何建议 请不吝赐教nin
  • centos7 网络不通?

    仅仅作为自己的笔记自己后续查看 1 首先我这里的vmvare 需要改成nat 模式 然后解决这个问题需要修改3个文件 1 etc sysconfig network 主机名 默认网关 DNS 2 etc sysconfig network
  • python 报错DataFrame object has no attribute dtype

    错误信息 DataFrame object has no attribute dtype 原因 在dataframe astype str 的列的数据类型有object类型 解决方法 将对象的列的数据先转成字符串
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • Java中String类的使用(一):如何判断一个字符串中是否含有指定的字符或字符串

    这里我给大家介绍三种简单的方法 一 使用String类中的contains CharSequence s 方法 使用contains CharSequence s 方法时 当且仅当此字符串包含指定的字符或字符串时 返回 true 否则返回f
  • 【Android Studio】Design editor is unavailable until next gradle sync.如何解决?

    Design editor is unavailable until next gradle sync 如何解决 打开一个网上开源的下载文件 在查看安卓页面布局 也就是控件布局时 会出现一个bug Design editor is unav
  • MYSQL 8.0 及以上版本设置远程连接。

    卸载 在 Ubuntu 系统上彻底卸载 MySQL 8 0 可以按照以下步骤进行操作 停止 MySQL 服务 输入以下命令 sudo systemctl stop mysql 删除 MySQL 相关文件和文件夹 输入以下命令 sudo ap
  • 刷脸支付解决开店实体商家易守店难的难题

    刷脸成为了现实 各地实行刷脸的试点都取得成功 刷脸也就这样的走进我们的生活 不需要带手机 钱包 直接选择刷脸 当然 方便的还是无须等待排队 原本一个收银台需要配备一名收银员 所以考虑人力成本收银柜台数量是有限的 但是使用刷脸支付 商家可以同
  • python中类的函数的调用

    这里要考虑的重要事项是您正在使用的变量和 或函数名称的范围 全局范围意味着 一切都可以看到它 无论是在顶层 在函数内部 还是在一个类中的方法内部 本地范围意味着它已锁定在该块的上下文中 并且块外的任何内容都无法看到它 在 您的情况下 该块是