python 面向对象简介(不包含继承和深入内容)

面向对象编程

面向对象编程是和面相过程编程不同的另一种编程方式。面向过程编程主要是在描述一个过程,而面向对象编程则是描述整个对象的各种属性和行为。

名词解释:
  • 对象:世间万物,只要是可以描述的东西,都称之为对象
  • 属性:对象的各种属性,比如一个人这个对象的名字、年龄、住址、电话、爱好、性别等,以名词为主
  • 方法:对象的各种行为,比如一个人这个对象可以吃、喝、写作业、走路、跑步,以动词为主
  • 类:类是一个种类的意思,用于描述一类对象的属性和方法的一种特殊的结构
  • 实例:实例是从类当中产生的一个实际存在的对象,可以认为实例就是对象,对象就是实例,他们都是从类当中产生的,或者也叫做可以被他们对应的类进行描述的
  • 实例化:从类当中产生一个实例对象的过程
python 中定义一个类的方法

类用来描述一类对象,而这类对象具有什么属性、具有什么方法,这是需要我们去定义的,在 python 中定义一个类需要使用到一个关键字叫做 class,具体如下:

class Person:
    name = "Jack"
    age = 10

上面定义了一个类,叫做 Person,是这个类的类名,一般来说类名的首字母会大写,这个类描述了人类,每个从人这个类当中产生的对象,都会具有两个属性,一个是 name 名字,对应的值是 "Jack" ,一个是 age 年龄,对应的值是 10

类的实例化

想要从上面定义的类当中生成一个具体的对象,可以直接将这个类当做函数调用,具体如下:

p1 = Person()

上面从 Person 这个类当中产生了一个对象出来,将这个对象存储到了 p1 变量中,如果想要访问这个对象的属性或者方法,需要用到点 . 来进行,如下:

p1.name

如果使用 print 打印上面的属性,也就是用 print(p1.name) 进行打印,会得到结果 Jack

如果再次实例化一个类,并检查他的 name 属性,会发现所有人都叫这个名字,如果想要修改某个对象的属性,可以直接当做变量修改

p2 = Person()
p2.name = "Sara"
print(p2.name)	# 会得到 Sara
类的构造方法(初始化)

从上面不难看出,我们所有从这个类当中出来的对象都叫同一个名字,因为直接定义在类里面的变量,实际上叫做类属性,类属性是所有从这个类出来的对象共同拥有的,除非通过 对象名.属性名 = 值 的方式进行重新赋值,否则一旦类属性改变,所有的对象的对应属性都会同时改变。

但是如果通过上面的方式在每次创建的时候都进行修改会很麻烦,所以我们可以定义一个初始化方法,用来设置我们产生的这个对象自己独有的属性,所以我们需要将类的定义修改如下:

class Person:
    def init(self, name, age):
        self.name = name
        self.age = age

注意:类当中定义的函数就叫做类的方法,这些方法在定义的时候,第一个参数必须且只能为 self

通过定义了一个初始化方法 init,我们成功做到只需要像下面一样非常简单的在创建完对象之后调用一下这个对象的初始化方法,来对这个对象的属性进行赋值即可:

p1 = Person()
p1.init("Mike", 9)

但是每次我们创建一个对象都需要单独调用一下初始化方法,我希望有更简单的办法去进行初始化,所以我们可以通过一种特殊的技巧来做到这件事情,我们需要将类的定义修改如下:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p1 = Person("Mike", 9)	# 类的实例化的时候自动调用 __init__ 方法,并在此传递参数
p2 = Person("Sara", 10)

通过对比不难发现区别,首先在定义的时候,对初始化的函数名前后各加了两个下划线,注意:这个 __init__ 的方法名不能改变,只能叫这个名字 。这种前后各两个下划线的方法,我们称之为魔术方法(magic method),它具有非常神奇的功效,也就是 在对象的某些情况下会自动调用 ,对于 __init__ 方法来说,会在类的实例化的时候自动的调用,所以也叫做构造方法、初始化方法。构造方法调用的时机是实例化的时候自动调用,并且参数通过实例化的时候跟在类名后面的括号进行传递。

更多面向对象的详细介绍在 https://www.runoob.com/python3/python3-class.html

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值