学习python第十二节课:面向对象--类的概念与调用

本文详细介绍了Python中的面向对象编程概念,包括类和对象的关系、类的定义与对象的创建、self关键字的使用,以及如何添加和获取对象属性。面向对象编程强调通过对象来操作,提供更好的代码复用性和维护性。类作为对象的模板,用于创建实例,而对象则是类的具体表现。文中还探讨了方法调用与函数调用的区别。
摘要由CSDN通过智能技术生成

一、面向对象的概念

Python是⼀⻔⾯向对象的编程语⾔,所谓⾯向对象的语⾔,简单理解就是语⾔中的所有操作都是通过对象来进⾏的。

⾯向过程:

  1. ⾯向过程指将我们的程序分解为⼀个⼀个步骤,通过对每个步骤的抽象来完成程序

  2. 这种编写⽅式往往只适⽤于⼀个功能,如果要实现别的功能,往往复⽤性⽐较低

  3. 这种编程⽅式符合⼈类的思维,编写起来⽐较容易

    1. 妈妈穿⾐服穿鞋出⻔
    2. 妈妈骑上电动⻋
    3. 妈妈到超市⻔⼝放好电动⻋
    4. 妈妈买⻄⽠
    5. 妈妈结账
    6. 妈妈骑电动⻋回家
    7. 到家孩⼦吃⻄⽠

⾯向对象的编程语⾔,关注的是对象,⽽不注重过程,对于⾯向对象⼀切皆对象。

以上⽅式可以⽤ 孩⼦妈妈给孩⼦买⽠来解决。

⾯向对象的编程思想,将所有功能统⼀保存到对应的对象中,要使⽤某个功能,直接找到对应的对象即可。

这种编码⽅式⽐较容易阅读,并且易于维护,容易复⽤。但是编写的过程中不太符合常规的思维,编写相对麻烦。

二、类和对象

在面向对象编程过程中,有两个重要组成部分:对象

类和对象的关系:用类去创建一个对象。

我们⽬前学习的都是Python的内置对象,但是内置对象并不都能满⾜我们的需求,所以我们在开发中经常要⾃定义⼀些对象。

类简单理解它就是相当于⼀个图纸,在程序汇总我们需要根据类来创建对象。类就是对象的图纸我们也称对象是类的实例(instance)。

如果多个对象是通过⼀个类创建的,我们称这些对象是⼀类对象。

2.1 理解类和对象

2.1.1 类

类(class) 是对一系列具有相同特征行为的事物的统称,是一个抽象的概念,不是真实存在的事物。

  • 特征即是属性
  • 行为即是方法

类比如是制造物品的图纸,也就是说类是用来创建对象

2.1.2 对象

类和对象都是对现实⽣活中事物的抽象,对象是类创建出来的真实存在的事。类也是⼀个对象,类就是⽤来创建对象的对象。

注意:开发中,先有类,再有对象。

我们也称对象是类的实例(instance)

2.2 面向对象的方法

2.2.1 定义类

  • 语法
class 类名([父类]):
    代码

class 类名:
    代码
    ......

注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯

  • 体验
class Washer():
    pass

class MyClass:
    pass

2.2.2 创建对象

对象是类的实例(instance)

  • 语法
对象名 = 类名()
  • 体验
# 创建对象
haier1 = Washer()

# <__main__.Washer object at 0x0000018B7B224240>
print(haier1)

注意:创建对象的过程也叫实例化对象。

2.2.3 self

self指的是调用该函数的对象。

在类中,不能调用类外部的变量

# 1. 定义类
class person():

    def speak(self):
        print(self)  # <__main__.person object at 0x000001A50D1F7460>
# 创建对象
p1 = person()
p1.name = '周慧敏'
p2 = person()
p2.name = '刘亦菲'
# p1调用
p2.speak()
print(p2)  # <__main__.person object at 0x000001A50D1F7460>


class person():

    def speak(self):
        print(f'我喜欢%s'%self.name)  # <__main__.person object at 0x000001A50D1F7460>

p1 = person()
p1.name = '周慧敏'

p2 = person()
p2.name = '刘亦菲'

p2.speak()  # 我喜欢刘亦菲
'''

注意:打印对象和self得到的结果是一致的,都是当前对象的内存中存储地址。

self的内存地址,和p1的内存地址是一致的,这可以证明,self就是p1。函数被定义以后,在任何地方都可以调用,没有调用的主体,而类的方法,则需要一个调用主体,哪个实例调用了类的方法,self就会绑定为哪个实例,self这个参数就是哪个实例。

总结:

  1. 在类中定义方法会默认传递一个参数,一般我们称这个参数为self(这是规范,不是规则)
  2. 通过发现,如果p1调用,则m就是p1的对象,如果p2调用,m就是p2的对象。

2.2.4 检查一个对象是否是另一个对象的实例

  • 语法
isinstance()
  • 体验
class MyClass:
    pass

# print(MyClass)   #  <class '__main__.MyClass'>
#  mc是MyClass这个类创建出来的对象,mc是MyClass类的实例
mc = MyClass()
mc2 = MyClass()
mc3 = MyClass()
mc4 = MyClass()

r = isinstance(mc,MyClass)
print(r)  # True

三、添加和获取对象属性

3.1 添加对象属性

  • 语法
对象名.属性名 =
  • 体验
class MyClass:
    pass

# print(MyClass)   #  <class '__main__.MyClass'>
#  mc是MyClass这个类创建出来的对象,mc是MyClass类的实例
mc = MyClass()
mc2 = MyClass()
mc3 = MyClass()
mc4 = MyClass()

mc.name = '葫芦娃'  # 对象名.属性名 = 葫芦娃
mc2.name = '钢铁侠'  # 对象名.属性名 = 钢铁侠

3.2 类里面获取对象属性

可以向对象中添加变量,对象中的变量称之为属性。

  • 语法
对象名.属性名
  • 体验
class MyClass:
    pass

# print(MyClass)   #  <class '__main__.MyClass'>
#  mc是MyClass这个类创建出来的对象,mc是MyClass类的实例
mc = MyClass()
mc2 = MyClass()
mc3 = MyClass()
mc4 = MyClass()

mc.name = '葫芦娃'  # 对象名.属性名 = 葫芦娃
mc2.name = '钢铁侠'  # 对象名.属性名 = 钢铁侠

print(mc.name)  # 葫芦娃
print(mc2.name)  # 钢铁侠
  • 在类中定义的变量,我们称之为属性(或者说是所有实例的公共属性)

  • 也就是所有实例都可以访问这些变量

class Person:
    name = '葫芦娃'   # 公共属性,所有实例都可以访问
p1 = Person()
print(p1.name)
  • 在类中定义的函数我们称之为方法。

  • 这些方法都可以通过该类的实例来访问

对象.方法名()

class Person:

    def speak():
	    print('你好.....')
p1 = Person()
p1.speak()  # TypeError: speak() takes 0 positional arguments but 1 was given  speak()接受0个位置参数,但给出了1个

class Person:
    def speak(a):
	    print('你好.....')
p1 = Person()
p1.speak()   # 你好.....

四、类的调用

4.1 公共属性

  • 在类中定义的变量,我们称之为属性(或者说是所有实例的公共属性)

  • 也就是所有的该实例都可以通过对象.属性名的形式访问

class Person:
    name = '葫芦娃'   # 公共属性,所有实例都可以访问
p1 = Person()
print(p1.name)  # 葫芦娃

4.2 方法调用和函数调用的区别

  • 如果是函数调用,函数有几个形参,我们就会传递几个实参
  • 如果是方法调用,默认传递一个参数,所以⽅法中⾄少得有⼀个形参在类代码块中,我们可以定义变量和函数

4.3 函数调用

  • 在类中定义的函数我们称之为方法。

  • 这些方法都可以通过该类的实例来访问

对象.方法名()

class Person:

    def speak():
	    print('你好.....')
p1 = Person()
p1.speak()  # TypeError: speak() takes 0 positional arguments but 1 was given  speak()接受0个位置参数,但给出了1个

class Person:
    def speak(a):
	    print('你好.....')
p1 = Person()
p1.speak()   # 你好.....
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值