Python-面向对象

面向对象编程

万物皆对象。

对象是具体事物,拥有属性和行为,是把很多事物封装在一起的。

Python是一门特别彻底面向对象(OOP)编码的语言。
面向对象和面向过程:
两者都是解决问题的一种思路;

面向对象:在解决问题的时候,关注的是绝句问题所需要的对象

面向过程:在解决问题的时候,关注的是解决问题的每一个过程(步骤)

面向对象本质是对面向过程的封装。

类的作用:根据抽象的类,生产出具体的对象
Python类里面分为两个类:经典类和新式类

类和对象的联系](https://img-blog.csdnimg.cn/0779e6557419445e931fd31b23840b66.png)

属性和变量的差别
查看一个对象有哪些属性:对象.dict

#定义一个类
class Person:
	pass
#实例化一个对象
p = Person()
p.age = 18 #给p对象增加一个属性
print(p.age)# 18
print(p.__dict__)#{"age":18}#输出该对象下的所有属性(字典形式)

![对象中的属性存放位置](https://img-blog.csdnimg.cn/2e78b764cb664f5cae35874296a2c5f3.png)

万物皆对象,类也是一个对象。
类属性和对象属性的操作(增删改查)

在这里插入图片描述
查看一个类下的所有属性:类名.dict
类属性是被各个对象共享的

对象属性p = Person(); p.age 会先去访问对象属性,如果对象属性里面没有,再去找Person类的类属性,如果两个都没有会报错属性错误。

如何限制一个类中的属性不能被对象随便添加(为保证一个类生产的对象都是基本标准的):可以在类中限制一个类属性 __slots。

类方法和函数都是为了描述一系列的动作,而两者最大的差别在于调用方式不同,类方法是采用对象.类方法名称() 调用,而函数直接通过函数名称调用。
在这里插入图片描述

def eat():
    print( "这是一个普通函数" )

class Person:
    def eat2(self): #实例方法
        print("这是一个实例方法:", self)#self就是一个实例对象的数据类型:<__main__.Person object at 0x0000022A22A60520>

    @classmethod
    def leifangfa(cls):#类方法
        print( "这个一个类方法:", cls )#cls是一个类方法的数据类型:<class '__main__.Person'>

    @staticmethod
    def jingtaifangfa():#静态方法
        print( "这是一个静态方法" )

p = Person()
p.eat2()
p.leifangfa()
p.jingtaifangfa()

self、cls 是代表方法的第一个参数要接收的数据类型。

在这里插入图片描述

class Person:
	def eat()

装饰器的作用:在保证原本函数不改变的前提下,直接给这个函数增加一些功能

实例方法可以访问实例参数和类参数,类方法和静态方法只能访问类变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值