【python笔记03】《类》

时间:2024-11-18 21:56:40

文章目录

  • 面向对象基本概念
    • 对象的概念
    • 类的概念
  • 类的定义
  • 类的创建(实例的模板)
  • 类的实例化--获取对象
  • 对象方法中的self关键字
  • 面试题
    • 请描述什么是对象,什么是类。
    • 请观阅读如下代码,判断是否能正常运行,如果不能正常运行,错误点在哪?

面向对象基本概念

OOA:面向对象分析analysis
OOD:面向对象设计design
OOP:面向对象编程programing(面向对象开发)

对象的概念

对象,object,业务逻辑的动作实体就对应着OOP编程中的一个对象

对象:属性(就是变量)、方法(就是函数(未来完成某个功能))
对象保存数据,方法操作数据

类的概念

python采用类产生对象,用类规定对象的属性和方法

为什么引入类
类是对现实世界的一种模拟,任何实体都有一个类别,类就是具有相同或相似属性和动作的一组实体的集合

class 人:
属性:name、age
方法:吃饭、跑、扯淡

面向对象:类和对象

  • 类是一个抽象概念(具有相同或相似属性和动作的一组实体的集合)
  • 对象是类实例化产生的具体事物
  • 一个对象的所有应该具有特征特性信息,都是由其所属的类来决定的,但是每个对象又可以具有不同的特征特性信息

比如,
我自己(人类)这个对象,名字叫老王,性别男,会写代码,会教书;
另一个对象(人类)可能叫赵薇,性别女,会演戏,会唱歌!

类的定义

经典的类(python2)(很少使用了):

class 类名:
	属性
	方法

新的类(python3):

class 类名(object):
	属性
	方法

object:基类

这就是一个类,只不过里面什么都没有!

类的创建(实例的模板)

类是相同或相似属性和方法的一组对象的集合,是一个抽象概念

class Person(object):
	# 属性  # 属性是什么下下面再讲
	# 方法
	def run(self):  # self是啥玩意,后面讲
		print('跑起来了????')
	def eat(self):
		print('奥里给,干了!????')
	def speak(self):
		print('随安不是同一时间,但是同一撤硕????')
  • 其中,类名既可以大写也可以小写,遵守一般的标识符的命名规则(以字母数字和下划线构成,并且不能以数字开头),一般为了和方法名相区分,类名的首字母一般大写!(大驼峰法:单词首字母大写)
  • 类在定义构成中,只是描述了一下未来这个对象所拥有的属性和方法,但是其本身并没有并调用,只有在实例化对象时其才真正执行

类的实例化–获取对象

  • 类是具有相同或相似属性或方法的一组对象的集合,其是一个抽象概念。要想把其创建为具体的对象,需要经过实例化的过程
  • 类是一个抽象概念,可以同时产生多个对象
  • 创建的对象都会有类的属性和方法
# 类的实例化
p1 = Person()  # p1就是对象
  • 对象的方法的调用
    对象名称.属性
    对象名称.方法()
p1.eat()
p1.speak()

类是一个抽象概念,在定义时,其并不会真正的占用计算机的内存空间。但是对象是一个具体的事务,所以其要占用计算机的内存空间。

对象方法中的self关键字

self参数和实例化产生的对象内存地址一致,代表两者指向相同的内存空间

self关键字就代表实例化对象本身

class Person(object):
	#属性
	#方法
	def speak(self):
		print(self)
#实例化p1对象
p1 = Person()
print(p1)   # 0x000001CE9D8D2C88
p1.speak()  # 0x000001CE9D8D2C88
p2 = Person()
print(p2)   # 0x00000209498CA448  # 打印的内容是内存地址
p2.speak()  # 0x00000209498CA448  # 内存地址都是一样的

面试题

请描述什么是对象,什么是类。

答案:
在面向对象编程中,类和对象是两个重要的概念,它们具有不同的含义和作用。

类是一种抽象的概念,用于定义对象的属性和行为。类是一种自定义的数据类型,可以看作是对象的模板或蓝图。它描述了对象具有的共同特征和行为,定义了对象的属性和方法。

类定义了对象的结构,包括数据成员(属性/实例变量)和函数成员(方法)。通过类,我们可以创建多个相似结构的对象,每个对象都具有相同的属性和方法。

类通常具有以下特征:

  • 定义了对象的属性(变量)和方法(函数)。
  • 可以被实例化为一个或多个对象。
  • 可以通过继承机制派生出子类。
  • 提供了封装、继承和多态等面向对象的特性。

对象是类的实例化结果,是类的具体实体。对象是在内存中分配的一块空间,用于存储数据和执行方法。当我们使用类创建对象时,我们可以访问和操作对象的属性和方法。

对象具有以下特征:

  • 具有唯一的标识(在内存中的地址)。
  • 具有状态(属性值)。
  • 可以执行类定义的方法。

简单来说,类是对对象的抽象描述,定义了对象的结构和行为。而对象是类的实例化结果,具体化了类的抽象概念,拥有自己的状态和行为。类是对象的模板,而对象是类的具体实例。

通过创建不同的对象,我们可以利用面向对象编程的特性,实现代码的复用、封装数据和行为,并且更好地组织和管理程序的逻辑结构。

请观阅读如下代码,判断是否能正常运行,如果不能正常运行,错误点在哪?

class Person():
    def eat(self):
        print('我喜欢吃零食')

    def drink(this):
        print('我喜欢喝果汁')


p = Person()
p.drink()
Person.eat()

答案:
不可以正常运行,eat()方法的调用存在异常,应该用p对象进行调用,注意,drink(this)方法中写this用于替代self是可以的,不存在问题。