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

news/2025/1/20 7:07:18/

一、类与对象

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;尤其是当您希望在手机上随时欣赏和分享这…