python 类的使用(1) 之类使用的基本框架

在这里插入图片描述

python是一种面对对象编程的语言,其有很多的优点,使用类的编程方法也是python的一种特色。很多没有接触过类的人都会觉得类的使用比较复杂,同时类的继承是非常重要的功能,所以由于工作中可能用不太上继承,所以就忽略了类的使用。但是实际上使用类进行编程能够使代码更加清晰明了,同时也易于重用。

由于类的内容较多,因此我准备分几次写啦!

附上类使用专栏的其它文章的链接:

类的基本框架

类,正如其名,其被用来当做是一个种类,这个种类是具有一定的属性和一定的方法的。属性是类中所包含的变量,方法也就是类中所定义的各种函数,这里要注意类中所定义的变量是不包含在类方法中的,要不然就不叫类变量了。

类代表一个类,那么类的一个确切的例子也就是类实例了。类和类实例的区别就像是人类和一个人的区别,类都具有属性,就好比人类都具有手脚、大脑等等,类的方法就好比人类都能够吃饭、工作、学习等,而一个人就是类的实例化,一个人比如说我,我有属性(手脚、大脑),我还有方法(能够吃饭,工作)。这里应该能理解了吧,实际上类实例就是对类中属性、方法的一种实例化,使用一个例子去套用类中的属性和方法,而这个例子和这些属性和方法都是契合的。

接下来一下类使用的一个最简单的例子吧:

class Worker:

    sex = 'male'     # 类变量(也即类属性),在函数外设置,除非外部重新设置否则不变化

    def __init__(self, name, age): 
        self.name = name
        self.age = age
        self.email = name + str(age) + '.email.com'
        '''
        init是类的初始化函数,一个类在被调用时首先就要进入到init中来,通过init使类实例传入的参数
        等都被一一分配,也就是init能够将变量交给self储存。因此总的来说self所携带的属性可以从类属性
        中来(如此例中的sex),也可以是在init初始函数中被定义。但是这些属性只要有被定义过就能够被访问
        到。在这个例子中我们在init方法中通过函数获取的name和age设置了self.name、self.age和
        self.email的变量,这些变量就被self这个实例对象储存下来。也就是说self将一个类中的方法或
        属性可能会用到的变量全部都储存起来了实际上可以把self对象携带的东西当成一个字典,就像
        {self.name:name,self.age:age,self.email:name + age + '.email.com'}这样
        实际上每个类实例在类看来都是一个self,而每一个self都有一个自己的字典。类中定义的方法想要
        使用类实例携带的变量只要在函数定义时加入self作为函数参数即可,self携带的变量和属性就
        都可以被类中定义的方法访问啦!实际上self携带的变量也可以使用其它命名,如self.n = name也
        可以,但是要调用的时候就是使用self.n了所以一般情况下大家都会用其原始命名,避免混乱也比较方便
    	'''
    def printit(self):
        print('{0} is {1} years old and is {2}'.format(self.name,self.age,self.sex))
    # 这里这个函数我传入了self,因此通过self.name、self.age、self.sex等可以获取到类变量和传入的实例变量

A = Worker('Mark',10)
'''
这里是将类实例化的过程,正是因为使用了__init__方法,因此类会自动识别这些变量
并按照定义的__init__方法去读取传入的变量,实际上想要自己写初始方法也可以,但是就更麻烦一点,
可以参考:https://blog.csdn.net/xrinosvip/article/details/89647884
'''
print(A.sex)
# A已经是一个实例化的类对象了,其具有属性,并且具有方法,可以获取其属性,或者执行其中的方法。
A.printit()
# 此处为执行类中的函数,执行的函数获取的变量来自于self

''' 
上面代码执行结果为:
male
Mark is 10 years old and is male
'''

上面就是一个类的基础框架啦,刚刚接触类的使用可能会感觉有点蒙圈,因此上面解释的较多,希望能帮助到读者理解吧。其实可能比较难理解的地方就是self了,其实self就是代表一个类实例所拥有的所有变量和属性嘛,只要有传入self,那么self就帮着储存以及传递属性,变量,这样在类中的所有有传入self的方法就能很方便地访问到类实例的变量和属性啦。

另外类还可以储存外界传入的属性直到一个类实例使用结束,例如:

# 还是刚刚的例子
class Worker:

    sex = 'male' 

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.email = name + str(age) + '.email.com'

    def printit(self):
        print('{0} is {1} years old and is {2}'.format(self.name, self.age, self.sex))
            
A = Worker('Mark', 10)
print(A.sex)      # 第一个print
print(A.email)    # 第二个print
# 此处获取类中的类属性,并打印
A.sex ='female'    # 尝试将类属性修改
A.name = 'lily'    # 尝试将类实例传入的类变量也修改
A.height = 1.82    # 尝试加入新的类属性
print(A.sex,A.height)   # 第三个print
print(A.email)          # 第四个print
A.printit()     # 调用类中的函数 第五个print
del A
print(A.sex)   # 在类删除后再尝试获取类属性  第六个print

运行结果如下:
在这里插入图片描述
一行一行分析结果:

  • 第一行:由第一个print函数打印出,这时候的性别属性还未被修改,因此这时候打印出的性别还是male
  • 第二行:由第二个print打印出,此时email还是最开始的email,因为姓名未修改
  • 第三行:第三个print函数打印,其中包含了性别、身高(height)、以及email,可以看出性别和身高都如我们所愿修改了,也就代表类属性是能够被修改的,同时类属性也是可以再额外添加的。
  • 第四行:可以看到这里的email地址未随着姓名的改变而改变,这是为啥呢?其实想想就知道,最开始在使用这个类的时候(也就是创建类实例时),这个类已经经过了init方法的初始化,self已经储存了各种变量的值,这里传入的姓名只能够改变self.name,但是不能改变self.emal了。但是实际上也是有办法能改变的,哈哈 就是使用@property装饰器,后面的文章我应该会解释这个的。
  • 第五行:其实就是类的方法中使用到的类属性和类变量也随着改变了。
  • 最后报错是因为A这个类实例已经被删除啦!

在上面这些基础框架搭好之后,可以使用help及dict等方法查看一些帮助信息,方法如下:

# 还是上面的代码
class Worker:

    sex = 'male'

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.email = name + str(age) + '.email.com'

    def printit(self):
    	'''
    	打印一些帮助信息
    	'''
        print('{0} is {1} years old and is {2}'.format(
            self.name, self.age, self.sex))
            
A = Worker('Mark', 10)
# 此处获取类中的类属性,并打印
A.sex = 'female'    # 尝试将类属性修改
A.name = 'lily'    # 尝试将类实例传入的类变量也修改
A.height = 1.82    # 尝试加入新的类属性
print(A.__dict__)
print(help(A))

结果如下:
在这里插入图片描述

可以看到第一行是这个类所具有的各种类属性及变量,这些都是可以被获取及使用的。

接下来的是帮助文档,大概是一个类的框架,自己熟悉了之后可以写一些自己代码的帮助文档(就是写注释就行啦,但是要用三个引号引起来的那种哦),以后看起来也方便。

类是一种很好用的方法,不仅仅可以用于一些继承的情况。使用类可以让代码更加简洁,也比较容易构建,重用等。不要犹豫啦,偶尔试一试呗!

后面还会更新类使用的知识,会做成一个小的系列,希望大家喜欢!!!

参考:https://www.py.cn/course/1106.html

参考:https://blog.csdn.net/xrinosvip/article/details/89647884

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值