python基础知识入门--类

(一)定义:class 是指面向对象编程范式中的一个概念——。Python 中的数据类型就是类,一个类对应一种数据类型。类的具体对象中可以保存若干数据,以及用于操作这些数据的若干函数。

一个例子:

我们常用的字符串类型,就是名为 str 的类。一个 str 中可以保存若干字符,并且针对这些字符提供了一系列的操作函数。

如 'hello' 就是一个 str 对象,我们可以把这个对象赋值给变量: 

    words = ‘hello’
    >>> words
    ’hello’

str 对象自带的 find() 函数,可用于获取字符的索引下标:

    >>> words.find(‘e’)
    1

str 对象自带的 upper() 函数,可用于获取英文字符的大写形式:

    >>> words.upper()
    ‘HELLO’

(二)类的自定义

        str、int、list 这样的类,是被预先定义好并且内置在 Python 中的。        当然,我们也可以自己来定义类。

类的定义方法是:

    class 类名:
        代码块

如:

    class A:
        pass

这里定义了一个非常简单的类,名为 A。pass 是占位符,表示什么都不做或什么都没有。

 
类的实例化

        我们把类看作是自定义的数据类型,既然是类型,那么它只能用来表示数据的种类,不能直接用于保存数据。想要保存数据,就需要先创建一个属于这种类型的类似于容器的东西,这种容器就叫做对象(或称实例)。通过类产生对象的过程叫实例化。

打个比方,类就相当于图纸,对象就相当于按照图纸所生产出来的产品。图纸能决定产品的内部构造以及所具有的功能,但图纸不能替代产品被直接使用。类能决定对象能保存什么样的数据,以及能拥有什么样的函数,但类不直接用来保存数据。

定义好类以后,可以像这样实例化对象:

变量 = 类名()

通过 类名() 这样类似函数调用的方式生成出对象,并将对象赋值给 变量。

如实例化之前的类 A 并将对象赋值为 a:

    >>> class A:
    …     pass
    …
    >>> a = A()

查看变量 a 的类型:

    >>> type(a)
    <class ‘__main__.A’>

可以看到类型是 __main__.A,表示模块 __main__ 下的 A 类。模块的概念后续章节中介绍,现在只需关注类即可。

可以看看 a 是什么:

    >>> a
    <__main__.A object at 0x103d8e940>

a 是 A 的对象,位于内存的 0x103d8e940 地址。

 
对象属性

之前定义的 A 类是一个空的类,像一个空壳子,它的对象 a 并没有保存任何数据。

想要在对象中保存数据该怎么做呢?

可以像这样来定义类,实例化的时候就可以用参数的形式将数据传入,并保存在对象中:

    class 类名:
        def __init__(self, 数据1, 数据2, ...):
            self.数据1 = 数据1
            self.数据2 = 数据2
            ...

和之前相比类的内部多了一个函数 __init__(),__init__() 函数一方面可以接收要保存在对象中的数据,另一方面也可以在实例化类的时候做一些初始化工作。

我们通过实际例子来学习。之前介绍的类(数据类型)要么保存一个数据,要么保存多个数据,假如现在想要一个不多不少只保存两个数据的类,这就需要我们自己来定义了。如下:

    class Pair:
        def __init__(self, first, second):
            self.first = first
            self.second = second

我们将这个类命名为 Pair,即表示数据对。

它的 __init__() 函数有三个参数:

    第一个是 self,它是类中函数默认的第一个参数,表示对象自身。我们可以将数据赋值给 self.数据名,这样数据就保存在对象中了
    first 是数据对的第一个值
    second 是数据对的第二个值

实例化的时候像这样传入数据:

pair = Pair(10, 20)

这个过程中会自动调用 __init__() 函数,并将 10 传给了 first 参数,将 20 传给了 second 参数,而 __init__() 的第一个参数 self 是不需要传值的,Python 会自动填充这个参数。

实例化之后我们可以通过 pair 对象来获取数据对中的数据,像这样:

    pair.first
    pair.second

    >>> pair = Pair(10, 20)

    >>> pair.first
    10
    >>> pair.second
    20

通过 pair = Pair(10, 20) 来实例化 Pair 类,得到对象的变量 pair,使用 pair.first、pair.second 就可以获得对象中保存的数据了。

first 和 second 叫做 Pair 类的对象属性,一般也可以直接叫作属性。

我们不仅可以通过对象获取对象属性的值,也能修改对象属性值。如:

    >>> pair = Pair(10, 20)

    >>> pair.first = 1000
    1000
    >>> pair.first
    1000

 
对象方法

刚才在类中定义了对象属性,也可以在类中定义一些函数。这样的函数可直接由对象调用,例如我们之前学过的 list.append() 。

定义在类中,供对象调用的函数称为对象方法,一般也可以直接叫作方法。定义方式如下:

    class 类名:
        def 函数1(self, 参数1, 参数2):
            ...

定义对象方法时第一个参数默认使用 self,定义时必须有这个参数,但是调用时不必传递。之前介绍过的 __init__() 就是一个对象方法,不过是个特殊的对象方法。

我们在之前 Pair 类的基础上定义一个方法,功能是交换对象的 first 和 second 属性的值。来实现一下:

    class Pair:
        def __init__(self, first, second):
            self.first = first
            self.second = second
            
        def swap(self):
            self.first, self.second = self.second, self.first

这个方法被命名为 swap,无需传递参数,内部通过

self.first, self.second = self.second, self.first

实现了 self.first 和 self.second 两个值的交换。

执行下看看:

    >>> pair = Pair(10, 20)
    >>> pair.first
    10
    >>> pair.second
    20

    >>> pair.swap()

    >>> pair.first
    20
    >>> pair.second
    10

 
总结

定义类的方式是:

    class 类名:
        代码块

在类中定义方法:

    class 类名:
        def 方法(self, 参数1, ...):
            self.数据1 = 数据1
            ...

可以在 __init__ 方法中定义对象属性,之后在实例化类的时候传入数据。如:

    class Pair:
        def __init__(self, first, second):
            self.first = first
            self.second = second
            
    pair = Pair(10, 20)
————————————————
版权声明:本文为CSDN博主「灰小猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44985880/article/details/115622253

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值