Python面向对象之类详解

一. 类和实例

面向对象最重要的概念就是类(class)和实例(instance),类是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示。而实例是根据类创建出来的一个个具体的“对象”,每一个对象都从类中继承有相同的方法,但各自的数据可能不同。

类的结构在大的方向上分为两部分

  • 静态变量
  • 动态方法

对象是从类中出来的,只要是类名加上(),这就是实例化的过程,就会实例化一个对象。
实例化的过程

  • 在内存中开辟一个对象空间
  • 自动执行类中的__init__方法,并将这个对象空间(内存地址)传给__init__()
  • 方法的第一个位置参数self 在__init__方法中通过 self 给对象空间添加属性

类的定义和调用

class Chinese(object):     ##(Object)表示该类从哪个类继承下来的,Object类是所有类都会继承的类。
    color = "yellow"      # 这里定义一个数据属性

    def make_money():     # 定义函数属性
        print("Can make money...")

    def impolite(self):
        print("Do something is impolite")

print(Chinese.color)      # 这种加上 . 的调用形式,本质上就是在属性字典中调用
Chinese.make_money()

print(dir(Chinese))       # 查看所有的变量(列表的形式)

print(Chinese.__dict__)   # 查看属性字典(包含数据属性和函数属性)
print(Chinese.__dict__["color"])
Chinese.__dict__["make_money"]()       # 这样就相当于直接去调用make_money函数
Chinese.__dict__["impolite"](Chinese)  # 这样调用impolite函数,因为这个函数中接受一个self参数,所以要将Chinese传入

print(Chinese.__name__)   # 显示类名
print(Chinese.__doc__)    # 类中的文档
print(Chinese.__module__) # 显示类所在的模块

在这里插入图片描述

二. 普通方法

  • 和普通数相比,在类中定义函数只有一点不同,就是第一参数永远是类的本身实例变量self,并且调用时,不用传递该参数。除此之外,类的方法(函数)和普通函数没啥区别
  • self代表类的实例,而非类
  • 在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

对于属性的查找规则

  • 对象查找属性的顺序:对象空间栈 ——> 类空间栈 ——> 父类空间栈
  • 类名查找属性的顺序:本类空间栈 ——> 父类空间栈 ——> …

初始化方法:
类名() 就可以创建一个对象 类名() 创建对象的时候,python解释器会自动执行以下操作

  1. 为对象在内存中分配空间–创建对象
  2. 调用初始化方法为对象的属性设置初始值 这个初始化方法是内置方法,是专门用来定义一个类据有哪些属性和方法的

定义一个类

class Person:
	name = '张三'
	def __init__(self, name, age):   #这里涉及初始化方法,会在魔术方法部分详述
		self.name = name
		self.age = age
	def eat(self, food):
		print('{}正在吃{} !。。。'.format(self.name, food))
	def run(self):
		print('{},今年}岁,正在跑步'.format(self.name, self.age))

进行调用

p = Preson()
print(p)

使用 类名() 创建对象,创建对象 的动作有两步:

  • 在内存中为对象 分配空间
  • 调用初始化方法 init 为 对象初始化
  • 创建出来的 对象 叫做 类 的 实例
  • 创建对象的 动作 叫做 实例化
  • 对象的属性 叫做 实例属性
  • 对象调用的方法 叫做 实例方法
  • 每一个对象 都有自己 独立的内存空间,保存各自不同的属性

  • 多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用 传递到方法内部

在这里插入图片描述

类属性的增删改查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值