美文网首页Python编程语言爱好者
详解Python类与对象(上)

详解Python类与对象(上)

作者: 罗罗攀 | 来源:发表于2021-07-09 19:28 被阅读0次

前言

面试官:什么是类?
你:我这个人很实在,不知道什么叫累。
面试官:恭喜你,你被录取了。

开个玩笑啊,对于Python或者其他面向对象的语言来说,类与对象是我们绕不开的话题,而且相比于其他基础性语法,类与对象更加复杂,难学。本文将详细讲解类与对象的概念,使用方法,希望能对读者有所帮助。

基本概念

首先我们来看看面向对象的相关名词及相关解释。

  • 类:一群有着相似性的事物的集合,这里对应 Python 的 class。
  • 对象:集合中的一个事物,这里对应由 class 生成的某一个 实例(object)。

我们首先来举个简单的例子,动物是类,那狗、猫就是动物这个类的两个实例。

  • 属性:类似于变量,用来存储数据。
  • 方法:类似于函数,用来使用数据。

例如,动物都会有毛发颜色(属性),发出叫声的能力(方法)。

初体验

看完了基本概念,如果你还一知半解的话,没有关系,我们从Python中我们最常用的int类型出发,对面向对象来一个初体验。

i = 23
type(i)

<class 'int'>

我们这里的i其实就是int类的一个实例(或者叫对象),实例一般都有属性和方法,我们可以用dir来查看。

i = 1
print(dir(i))

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

这里总共有三种类型,第一种是前带两个下划线后带两个下划线的(魔法方法);第二种就是属性;第三种就是方法。属性和方法在这里是看不出来的。

i = 1
print(i.numerator)
print(i.bit_length())

1
1

调用属性不需要加括号,方法需要加括号,这很好理解,我们如果使用过函数就明白了。

以此类推,我们常用的列表字典等数据类型,也是一样的,大家也可以自己尝试用一用。

小试牛刀

我们再来看看上面我们举的案例,动物这个类,有属性和方法,本节我们就来实现这个类,我们先来看代码。

class Animal:

    def __init__(self, species, furcolor):
        self.species = species
        self.furcolor = furcolor
        print('create')

    def call(self):
        return '{} is calling'.format(self.species)


cat = Animal('cat', 'yellow')
dog = Animal('dog', 'gray')
print(cat.furcolor)
print(dog.call())

create
create
yellow
dog is calling

(1)定义类,需要用关键词class,类名词首字母大写。

(2)__init__是构造函数,实例化(生成对象)的时候,也就是cat = Animal('cat', 'yellow')的时候,就会直接调用该方法。第一个参数必须为self,表示创建对象本身。

(3)call函数参数也为self,是为了使用自身的属性。调用的时候是使用对象.方法,当然也可以用类.方法(对象)。
例如,arr.sum(),np.sum( arr )是一样的效果。

类变量

我们之前定义的变量都是对象的,我们本节定义类变量,例如动物的腿的个数。

class Animal:

    leg = 4

    def __init__(self, species, furcolor):
        self.species = species
        self.furcolor = furcolor

    def call(self):
        return '{} is calling'.format(self.species)


bird = Animal('bird', 'yellow')
dog = Animal('dog', 'gray')
print(bird.leg)
print(dog.leg)

4
4

需要注意的是,如果改变类变量,对象变量都会发生变化,如果改变的是对象变量,则类变量不发生改变。

bird = Animal('bird', 'yellow')
dog = Animal('dog', 'gray')
bird.leg = 2
print(bird.leg)
print(dog.leg)
print(Animal.leg)

Animal.leg = 6
print(bird.leg)
print(dog.leg)
print(Animal.leg)

2
4
4
2
6
6

今天的分享就到这了,下期我们将更加深入了解Python的类与对象。

相关文章

  • 详解Python类与对象(上)

    前言 面试官:什么是类?你:我这个人很实在,不知道什么叫累。面试官:恭喜你,你被录取了。 开个玩笑啊,对于Pyth...

  • python 类

    类 用来描述具有相同的属性和方法的对象的集合。python中的类就是对象。 python 中的元类详解 创建Dog...

  • python面向对象和元类的理解

    1 python类对象与实例对象 python中一切皆对象(广义上的对象),类也不例外,我们可以称类为类对象。py...

  • 详解Python类与对象(下)

    前言 上节课我们介绍了Python面向对象的基本概念和使用,本节课将继续讲解Python面向对象,主要分为两个部分...

  • Python实现图像几何变换

    Python-Image 基本的图像处理操作ImageDraw类详解ImageFont类详解

  • 23.Python之面向对象(类与对象)

    Python之类与对象 类类:用来描述具有相同的属性和方法的对象的集合(在Python中类与类型是一个概念)。特点...

  • Python可迭代对象与迭代器详解

    Python可迭代对象与迭代器详解 首先先来了解几个概念 可迭代对象 (Iterable) : 实现了 __ite...

  • python自定义功能之面向对象

    本章主要内容 类与对象 定义和使用类 类的属性和方法 类的继承 类的方法重载 总结: python中的类与对象与J...

  • Python - 类与对象

    使用类的三步骤 Step 1. 定义类 类是对象的蓝图和模板 有了类就可以创建对象定义类需要做的两件事情:数据抽象...

  • python类与对象

    类是一种数据类型,而对象是具有这种数据类型的变量。类是抽象的,不占有内存空间。而对象是具体的,占有储层空间。 py...

网友评论

    本文标题:详解Python类与对象(上)

    本文链接:https://www.haomeiwen.com/subject/skgmultx.html