(小甲鱼python)类和对象(I)总结 类的定义、self的用法

news/2024/2/29 3:09:06

一、类与对象

1.类
定义类时,类名首字母大写。
属性即写在类里面的变量,方法即写在类里面的函数。

例1:

class Turtle:head=1eyes=2legs=4shell=Truedef crawl(self):print("不积跬步无以至千里")def run(self):print("积极奔跑")def bite(self):print("bite,bite,bite")def eat(self):print("谁知盘中餐,;粒粒皆辛苦")def sleep(self):print("Zzzzzzz")>>> t1=Turtle()    
>>> t1.head       #定义的方法,通过t1引用
1
>>> t1.legs
4
>>> t1.crawl()
不积跬步无以至千里
>>> t1.bite()
bite,bite,bite
>>> t1.sleep()
Zzzzzzz

将类Turtle赋值给t2

>>> t2=Turtle()
>>> t1.head
1
>>> t1.legs
4
>>> t2.head
1
>>> t2.legs
4
>>> t2.crawl()
不积跬步无以至千里
>>> 
>>> t2.legs=3    #修改t2变量的值
>>> t2.legs
3
>>> t1.legs     # 修改t2属性值,t1并不会改变
4
>>> 
>>> t1.mouth=1
>>> t1.mouth
1

用dir()函数,可以看到t1 比 t2多了一个mouth属性

>>> dir(t1)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bite', 'crawl', 'eat', 'eyes', 'head', 'legs', 'mouth', 'run', 'shell', 'sleep']
>>> 
>>> dir(t2)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bite', 'crawl', 'eat', 'eyes', 'head', 'legs', 'run', 'shell', 'sleep']
>>> 

2.self用法
类里面的参数都必须有一个self参数作为第一个参数。
例2:
没用self报错

>>> class C:def hello():print("你好")>>> c=C()
>>> c.hello()
Traceback (most recent call last):File "<pyshell#33>", line 1, in <module>c.hello()
TypeError: hello() takes 0 positional arguments but 1 was given
>>> 

例3:

>>> class C:def get_self(self):print(self)>>> c=C()
>>> c.get_self()        # 类c的实例化对象
<__main__.C object at 0x000001F8EF836E80>
>>> c
<__main__.C object at 0x000001F8EF836E80>
>>> 

课后题:
1.判断

>>> class C:
...     x = 250
...        
>>> c1 = C()
>>> c2 = C()
>>> c1 is c2
False
>>> c1 == c2
False
>>> c1.x is c2.x
True
>>> c1.x == c2.x
True

解析:虽然是基于统一个类的两个对象,但它们并不相同,也并不相等。但它们所拥有的 x 属性,确都是来自于同一个类 C 的。
2.请问下面代码中,self 参数的值什么?为什么方法定义的时候有 self 参数,但在调用中却无需传递实参?

>>> class C:
...     def func(self):
...         print("Hi FishC~")
...
>>> c = C()
>>> c.func()
Hi FishC~

答:在上面代码中,self 参数的值是对象 c 自身;因为 self 参数是对象访问方法的时候自动进行传递的,所以不需要我们进行显式传递。
解析:
同一个类可以生成无数多个对象,那么当我们在调用类里面的一个方法的时候,Python 如何知道到底是哪个对象在调用呢?
没错,就是通过这个 self 参数传递的信息。
所以,类中的每一个方法,默认的第一个参数都是 self。

题目来自小甲鱼类与对象


http://www.ppmy.cn/news/72948.html

相关文章

微博官方API使用方法【从注册到实战】

第一步&#xff1a;微博开发者身份认证 访问微博开放平台&#xff0c;登录自己微博账号&#xff0c;登录之后首先需要完善开发者的基本信息。【使用个人】 填写完成之后【审核通过】如下&#xff1a; 第二步&#xff1a;创建自己的应用 【备注&#xff1a;如果只是为了测试…

linux配置https访问使用443端口方法

原因&#xff1a;普通用户无法开启443端口 在Linux上&#xff0c;使用普通用户启动Nginx并监听443端口可能会失败。这是因为端口号低于1024的端口是受保护的特权端口&#xff0c;只有具有管理员权限的用户才能使用这些端口。 方案一&#xff1a;普通用户能够使用特权端口权限…

银行半结构化和无领导群面注意事项

银行可以同时报考多家&#xff0c;因此部分同学也积累了不少宝贵的面试“失败”经验。今天小编就来给大家说说半结构化和无领导群面的注意事项&#xff0c;从如信银行考试中心了解到的整理如下&#xff1a; 一、半结构化面试注意事项&#xff1a; 半结构化面试更侧重于了解考生…

部分等保政策相关专业术语英文翻译汇总

不少人会问&#xff0c;等保2.0英文翻译是什么&#xff1f;等保测评英文全称怎么说&#xff1f;等保英文怎么说等等&#xff1f;这里我们小编就给大家整理了部分等保政策相关专业术语英文翻译&#xff0c;仅供参考哦&#xff01; 部分等保政策相关专业术语英文翻译汇总 1、等…

LPP 和 Kernel LPP

无监督度量学习的降维讲义:LPP Lecture notes in dimensionality reduction for unsupervised metric learning: LPPLECTURE 6: LOCALITY PRESERVING PROJECTIONS AND KERNEL LPP A. Kernel LPP Lecture notes in dimensionality reduction for unsupervised metric learning: …

JS中Array的forEach、map、filter方法区别?

一&#xff1a;基本用法 1、forEach()函数用于对数组中的每个元素执行给定的函数&#xff0c;而它不返回任何值&#xff0c;它只是对每个元素调用传入的函数。这个函数可以接受三个参数&#xff1a;当前元素的值、当前元素的索引和整个数组。 const arr [1, 2, 3]; arr.forE…

【Proteus仿真】基于VSM 51单片机定时计数器闹钟例程

【Proteus仿真】基于VSM 51单片机定时计数器闹钟例程 🎬例程仿真功能操作演示: ✨本例程可从软件内部所提供的历程中找到,但是需要自行安装SDCC编译器才能对其源代码重新编译。 ⚡需要自行安装SDCC编译器。 🛠Proteus内部安装SDCC编译器方法 🌿将窗口切换到Source Co…

电脑照片怎么导入苹果手机?三个妙招帮你解决!

案例&#xff1a;电脑有很多照片&#xff0c;该如何导入苹果手机&#xff1f; 【家人们&#xff0c;电脑里面的照片怎么样可以快速导入到苹果手机&#xff1f;求方法&#xff01;】 导入电脑照片到苹果手机是一个常见的需求&#xff0c;尤其是当您希望在手机上随时欣赏和分享这…

【python】给你女神制作一个520图片墙吧~

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用 所需软件&#xff1a; Python 3.8 解释器 Pycharm 编辑器 模块使用&#xff1a; 内置模块 import re >>> python独有的匹配字符串的模块&#xff0c;该模块种提供功能基于正则表达式实现的&#xff0c…

ffmpeg-编译汇总01

ffmpeg-编译汇总 ubuntu18.04下编译ffmpeg 所有安装目录 /usr/local 1.nasm编译器编译 (nasm-2.13.03解包) ./configure --prefix/usr/local make -j4 sudo make install 注意&#xff1a;能检测到可以不用设置下面的环境。 安装完成后&#xff0c;为了系统能自动找到nasm程序&…

SCADA数据采集与监控系统在制药生产过程中的应用

01 应用背景 制药行业关乎大众生命健康&#xff0c;在生产过程中各方面都要求遵循质量规范。制药行业虽然是一种流程化行业&#xff0c;但是和石油、化工等流程行业不同&#xff0c;行业特点决定了它的特殊性。根据质量规范要求&#xff0c;制药行业的SCADA需要满足国内GMP、欧…

Jetson Nano调试记录:机电设备控制

边缘应用中,机电控制是一项非常重要的能力。 当我们的智能设备在远端环境中,根据所识别的状况变化去执行应对措施,更大程度度地降低对人为操作的依赖,这些都是能产生更大经济效益的应用,包括无人驾驶车、自动机械手臂等等。 实际工业应用场景中的控制元件是非常多样化的,…

buu [AFCTF2018]MyOwnCBC 1

题目描述&#xff1a; 三份文件 #!/usr/bin/python2.7 # -*- coding: utf-8 -*-from Crypto.Cipher import AES from Crypto.Random import random from Crypto.Util.number import long_to_bytesdef MyOwnCBC(key, plain):if len(key)!32:return "error!"cipher_t…

学生档案管理系统(SpringBoot,SSM,Maven,H-UI,Mysql)

【项目功能介绍】 本系统包含学生,后台管理员二种角色的用户 学生的功能包含: 登录,退出,修改密码,用户信息查看与修改,首页信息展示,轮播图,栏目及栏目文章列表,我的课程,我的课表,我的成绩,意见反馈,我的意见反馈。 后台管理员的功能包含: 登录,退出,修改密码,管理员管理,…

Android 之 ArrayList和数组之间的转换

ArrayList和数组之间的转换 DeviceBean data new Gson().fromJson(responseData, DeviceBean.class);List<String> list3 new ArrayList<>();for (int i 0; i < data.getRows().size(); i) {System.out.println("111111>>打印每条数据>>&qu…

内存泄漏的原因,内存泄漏如何避免?内存泄漏如何定位?

1. 内存溢出 内存溢出 OOM &#xff08;out of memory&#xff09;&#xff0c;是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;出现out of memory&#xff1b;比如申请了一个int,但给它存了long才能存下的数&#xff0c;那就是内存溢出。 2. 内存泄…

abc 245F 拓扑+思维

题意&#xff1a;https://www.luogu.com.cn/problem/AT_abc245_f 思路&#xff1a;对于一个图如何得到与环无关的点&#xff0c;我们只需要反向建图&#xff0c;跑拓扑&#xff0c;那么能进队列的都是不能走到环的点。 /*keep on going and never give up*/ #include<cstd…

AMBER分子动力学模拟之结果分析(突变型的能量计算,丙氨酸扫描)-- HIV蛋白酶-抑制剂复合物(5)

AMBER分子动力学模拟之结果分析(突变型的能量计算,丙氨酸扫描)-- HIV蛋白酶-抑制剂复合物(5) 丙氨酸扫描 在带电残基上引入一个或几个丙氨酸&#xff0c;观察这些改变对蛋白功能的影响。置换成丙氨酸&#xff0c;去除了侧链上的活性基团&#xff0c;换成了体积小、无其他官能…

有哪些工具软件一旦用了就离不开?

&#x1f496;前言 目前&#xff0c;随着科技的快速发展&#xff0c;电脑已经进入了许许多多人的生活 &#xff0c;在平日的学习、工作和生活里&#xff0c;我们会用的各种各样的强大软件。市面上除了某些大公司开发在强大软件&#xff0c;还有各路大神开发具有某些功能的强大…

C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统

外观模式&#xff0c;即 Facade Pattern。 外观模式是一种结构型设计模式&#xff0c;它提供了一个统一的接口来访问一个子系统的一组接口。外观将一个复杂的子系统与客户端代码分开&#xff0c;从而降低了子系统使用的复杂程度。 访问者模式&#xff08;Visitor pattern&#…
最新文章