3.这年头程序员谁还没几个对象了
3.1 类与对象
🚩类就是类别,所谓物以类聚,类就是多个类似事物组成的群体的统称。能够帮我们快速的去判断一个事物所具有的性质,比如我们可以把世界上的生物大致的分为:微生物、动物、植物三类,我们也可以把动物按照一定规则继续进行细分:人类,鸟类…,每一个类显然是具有一些特殊的功能的,比如人可以吃喝生产创造等。
数据类型:不同的数据类型属于不同的类,我们曾学过一个函数:type(),使用这个函数可以查看数据类型:
print(type(100)) print(type('辰chen')) print(type(3.14))
数据类型:不同的数据类型属于不同的类,我们曾学过一个函数:对象:100
,'辰chen'
,3.14
,分别是int
类,str
类,float
类之下的不同个例,这些个例的专业属于被称为实例或对象。
在 Python 中,一切皆对象
3.2 类的创建与组成
🚩创建类的语法结构:
class 类名: pass
比如我们可以创造一个学生类:
class Student: pass ''' 在之前的学习中我们知道,当我们不清楚要实现什么的时候 可以先写一个 pass,这样可以让程序不报错 '''
这里需要注意,我们在起类名的时候需要尽量做到见名知意,我们需要养成这样的习惯,这是一个程序员的自我修养!
类的组成:
1.类属性
2.实例方法
3.静态方法
4.类方法
❗️ 注:下面的代码使用了 __init__() 方法,后续会有讲解,读者这里只需要知道 __init__() 的含义是把输入的值进行赋值即可(对创建的对象进行初始化)
class Student: #Student为类的名称(类名)由一个或多个单词组成,每个单词的首字母大写,其余小写 native_pace='长治' #直接写在类里的变量,称为类属性 def __init__(self,name,age): self.name=name #self.name 称为实体属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性 self.age=age #实例方法 def eat(self): print('学生在吃饭...') #静态方法 @staticmethod def method(): print('我使用了statticmethod进行修饰,所以我是静态方法') #类方法 @classmethod def cm(cls): print('我是类方法,因为我使用了classmethod进行修饰') #在类之外定义的称为函数,在类之内定义的称为方法 def drink(): print('喝水')
你可以这么去理解:
在类中定义的函数被称为:实例方法
在类中定义的变量被称为:类属性
在类中定义函数前用 @staticmethod
修饰则为 静态方法
在类中定义函数前用 @classmethod
修饰则为 类方法
3.3 对象的创建
好啦好啦,现在让我来教你们怎么搞对象(不是
🚩创建对象的语法结构:
实例名 = 类名() # 比如: stu1 = Student()
下面我们来把 3.2 类的创建与组成 中的代码补全一下,你可以理解为 类 等同于一个框架,只有框架显然是不行的,在框架中具体实现的 对象,才是我们真正创造出来的个体
❗️ 注:下面的代码使用了 __init__() 方法,后续会有讲解,读者这里只需要知道 __init__() 的含义是把输入的值进行赋值即可(对创建的对象进行初始化)
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/23 19:06 # 欢迎大家关注AIoT相关博客~ class Student: #Student为类的名称(类名)由一个或多个单词组成,每个单词的首字母大写,其余小写 native_pace='长治' #直接写在类里的变量,称为类属性 def __init__(self,name,age): self.name=name #self.name 称为实体属性,进行了一个赋值的操作,将局部变量的name的值赋给实体属性 self.age=age #实例方法 def eat(self): print('学生在吃饭...') #静态方法 @staticmethod def method(): print('我使用了statticmethod进行修饰,所以我是静态方法') #类方法 @classmethod def cm(cls): print('我是类方法,因为我使用了classmethod进行修饰') #在类之外定义的称为函数,在类之内定义的称为方法 def drink(): print('喝水') #创建Student类的对象 stu1 = Student('辰chen',19) # 因为我们在类中重写了 __init__()方法,即可以创建对象的时候赋值 stu1.eat() #对象名.方法名() print(stu1.name) print(stu1.age) print('------------------------') Student.eat(stu1) #37行与32行代码功能相同,都是调用Student中的eat方法 #类名.方法名(类的对象)-->实际上就是方法定义处的self
3.4 动态绑定属性和方法
🚩Python 是动态语言,在创建对象之后,可以动态地绑定属性和方法,下面我们直接用代码去介绍:
❗️ 注:下面的代码使用了 __init__() 方法,后续会有讲解,读者这里只需要知道 __init__() 的含义是把输入的值进行赋值即可(对创建的对象进行初始化)
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/31 23:35 # 欢迎大家关注AIoT相关博客~ class Student: def __init__(self, name, age): self.name = name self.age = age # 实例方法 def eat(self): print(self.name + '正在吃饭') stu1 = Student('辰chen', 19) stu2 = Student('娇妹儿', 20) print(stu1.name, stu1.age) print(stu2.name, stu2.age) print('------------------------') # 我们知道,经过上述赋值后,对于 stu1 和 stu2 只有两个实体属性: name, age # 现在我们想给 stu1 添加一个性别的属性,可以采取下述结构 stu1.gender = '男' # 动态绑定属性 print(stu1.name, stu1.age, stu1.gender) # 下述代码运行结果可以看出我们只给 stu1 赋予了 gender 属性, stu2 是没有的 try: print(stu2.name, stu2.age, stu2.gender) except AttributeError as e: print(e) print('------------------------') # 我们除了动态绑定属性,还可以动态绑定方法: def drink(): print('要多喝水!!!') # 我们给 stu2 添加一个 drink 方法: stu2.drink = drink # 动态绑定方法 stu2.drink() # 下述代码运行结果可以看出我们只给 stu2 赋予了 drink 方法, stu1 是没有的 try: stu1.drink() except AttributeError as e: print(e)