##################################################
目录
##################################################
活动简介
活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…
…
欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程,或者按照自己的理解发布专栏学习作品!
##################################################
简单总结一下昨天的 Python 类和对象
——————————
类和对象通俗易懂的解释
如果自学能力强的同学可能上一篇就能把该掌握的掌握了:
%%%%%
什么是类
通俗来说:
类 = 成员属性 + 成员方法
类是一个抽象概念
就是将拥有
相同特征 指的是相同的成员属性
和
类似行为 指的是类似的成员方法
的这些
特例对象 指的是符合这个类的成员要求的单个实例
一句话总结:
类定义了对象的模板结构
%%%%%
什么是对象
通俗的说:
对象 就是这个 类 中 万千对象 的一个
我们通过
类 这个模板
按照
成员属性和成员方法 是这个类定义好的结构
实例化 出来一个
对象变量是类变量且对象方法是类方法 具有这个类的特征且符合这个类的行为的对象
一句话总结:
对象就是类的一个实例
%%%%%
什么是成员属性
简单的说:
成员属性就是变量那一大堆
需要注意的是:
在类中的变量
在方法外的变量
这些变量对所有通过该类实例化的对象可见
一句话总结:
成员属性就是声明在类中在类方法外的那些让所有该类对象共享的数据
%%%%%
什么是成员方法
简单的说:
就是定义在类中的函数
需要注意的是:
如果需要传参 必须带上 self 参数
类的方法与普通的函数只有一个的区别:
必须有额外的第一个 self 参数
selft 对应于该实例 就是说 self 就是该对象本身
按照惯例该参数的标识符是 self 但不是硬性规定的也要是 self
不要搞特例 别人不会明白的 这叫约定成俗
在调用方法时不需要明确提供与参数 self 相对应的参数
self 参数会自动传入
第一次进 Python 类中方法时踩过的坑:
我之前在写类和方法的时候从来不加 self
于是就出现了各种各样的 bug 例如没有这个成员变量哪怕你是真的声明了!!!
首先明确的是 self 只有在类的方法中才会有
独立的函数或方法是不必带有 self 的
虽然在调用时不必传入相应的参数 但是 self 在定义类的方法时是必须有的
self 名称不是必须的 在 Python 中 self 不是关键词
你可以定义成 a 或 b 或其她名字都可以
但是为了和其她编程语言统一减少理解难度 还是不要另类的好
一句话总结:
定义在类中的函数
%%%%%
关于类中函数的 self 参数必须要知道的
self 的名字并不是规定死的 但是最好还是按照约定还是用 self 比较好!
self 指的是类实例对象本身 注意是对象而不是类本身!!
self 在定义时需要定义 但是在调用时会自动传入!!!
##################################################
如何在交互模式中编写并解释运行类和方法
——————————
创建一个学生类
%%%%%
分析类的成员构成
学生类变量:
姓名
年龄
学生类方法:
输出姓名
更改姓名
%%%%%
创建学生类并访问对象成员
创建学生类:
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。
C:\Users\byme>python
Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (
AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class Student:
... name = "学生"
... age = 1314
... def getName(self):
... print ( "学生姓名 >>> [", self.name, "]" )
... def setName(self, name):
... self.name = name
... print ( "收到参数 [", name, "], 更改学生姓名 [", self.name, "]" )
...
>>> stu = Student()
>>> stu.getName()
学生姓名 >>> [ 学生 ]
>>> stu.setName("喜羊羊")
收到参数 [ 喜羊羊 ], 更改学生姓名 [ 喜羊羊 ]
>>> stu.getName()
学生姓名 >>> [ 喜羊羊 ]
>>>
注释一下 code:
class Student:
# 学生类
name = "学生" # 学生姓名 默认叫 "学生"
age = 1314 # 学生年龄 默认 1314 岁
def getName(self):
# 获取姓名 参数 self 表示当前对象
print ( "学生姓名 >>> [", self.name, "]" ) # self.name 表示访问当前对象的 name 变量
def setName(self, name):
# 设置姓名 参数 self 表示当前对象 name 表示传入的值这个是该方法内的局部变量!
self.name = name # 表示将接收的 name 赋值給当前对象的 name 变量
print ( "收到参数 [", name, "], 更改学生姓名 [", self.name, "]" ) # 不解释了..
stu = Student() # 实例化一个 Student 类的 stu 对象
stu.getName() # 打印该学生对象的姓名
stu.setName("喜羊羊") # 设置该学生对象的姓名
stu.getName() # 再次打印该学生对象的姓名
然后根据 Student 类创建了一个 stu 对象最后调用该对象的 getName 函数打印姓名变量:
>>> stu = Student()
>>> stu.getName()
学生姓名 >>> [ 学生 ]
>>>
再或者更改姓名:
>>> stu.setName("喜羊羊")
收到参数 [ 喜羊羊 ], 更改学生姓名 [ 喜羊羊 ]
>>> stu.getName()
学生姓名 >>> [ 喜羊羊 ]
>>>