Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—玩转Python语法(二):面向对象(四)

简介: 玩转Python语法(二):面向对象

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

image.png

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)

image.png




目录
相关文章
|
16天前
|
Java 编译器 C语言
Python速成篇(基础语法)上
Python速成篇(基础语法)上
|
1月前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
165 0
|
9天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
51 0
|
9天前
|
Python
02-python的基础语法-01python字面量/注释/数据类型/数据类型转换
02-python的基础语法-01python字面量/注释/数据类型/数据类型转换
|
16天前
|
存储 监控 Java
Python速成篇(基础语法)下(新年快乐♥)
Python速成篇(基础语法)下(新年快乐♥)
|
23天前
|
Java C语言 C++
【Python】5. 基础语法(3) -- 函数篇
【Python】5. 基础语法(3) -- 函数篇
26 1
|
23天前
|
存储 Java 程序员
【Python】6. 基础语法(4) -- 列表+元组+字典篇
【Python】6. 基础语法(4) -- 列表+元组+字典篇
41 1
|
1月前
|
Python
探索Python集合推导式的进阶应用
探索Python集合推导式的进阶应用
Python进阶系列(十八)
Python进阶系列(十八)
|
测试技术 Python
Python进阶系列(十七)
Python进阶系列(十七)

热门文章

最新文章