Python 面向对象和内存分析

086.面向对象和面向过程的区别_执行者思维_设计者思维

Python支持面向过程(更加关注流程,适合编写小程序)、面向对象(编写大规模)、函数式编程等多种编程范式

依然支持面向对象的基本功能:继承、多态、封装


087.对象的进化故事

进化过程:简单数据;数组;结构体;对象


088.类的定义_类和对象的关系

类:用来产生对象的对象(一切皆对象);将方法(函数)和属性放在一起;

对象的结构:方法(由同一个类创建的所有对象共享)和属性(每个对象维持自己的属性)

class Student:
    def __init__(self,name,sorce):#固定用法
        self.name=name
        self.sorce=sorce
    def any_score(self):
        print("{0}的分数是:{1}".format(self.name,self.sorce))

s1=Student("lala",12)
s1.any_score()


089.构造函数__init__

__init__方法():初始化创建好的对象

__new__方法():用于创建对象,无需重定义该方法

<注>所有构造器第一个参数必须为self;名称固定__init__();构造函数通常用来初始化对象的实例属性(与C++里的一样);通过类名来调用构造函数,构造函数没有返回值;

<注>python中的self相当于C++中的self指针,Java中和C#中的this指针;Python中,self必须为构造函数的第一个参数,名字可以任意修改,但遵守惯例,都叫做self


090.实例属性_内存分析

实例属性是从属于实例对象的属性,也称为“实例变量”,其使用的要点如下:

1.实例属性一般在__init__()方法中通过:self.实例属性名=初始值 来定义

2.在本类的其他实例方法中,也是通过self进行访问:self.实例属性名

3.创建实例对象后,通过实例对象访问

class Student:
    def __init__(self,name,sorce):#固定用法
        self.name=name
        self.sorce=sorce
    def any_score(self):
        print("{0}的分数是:{1}".format(self.name,self.sorce))

s1=Student("lala",12)
s1.any_score()
s1.age=18
print("年龄",s1.age)

s2=Student("www",15)
#print(s2.age)   因为age为s1的从属,只能被s1调用;


091.实例方法_内存分析方法调用过程_dir()_isinstance

实例方法是从属于实例对象

要点:a.定义实例方法时,第一个参数必须为self,和前面一样,self指当前的实例对象

           b.调用实例方法时,不需要也不能给self传参,self由解释器自动传参

class Student:
    def __init__(self,name,sorce):#固定用法
        self.name=name
        self.sorce=sorce
    def any_score(self): #方法也是属性
        print("{0}的分数是:{1}".format(self.name,self.sorce))

s2=Student("www",15)
#下面两句话是一样的
s2.any_score()
Student.any_score(s2)

 

<注>函数和方法的区别:

       1.都是用来完成一个功能的语句块,本质一样

        2.方法调用时,通过对象来调用,方法从属于特定实例对象,普通函数没有这个特点

        3.直观上看,方法定义的时候需要传递self,函数不需要

<补充>

class Student:
    def __init__(self,name,sorce):#固定用法
        self.name=name
        self.sorce=sorce
    def any_score(self): #方法也是属性
        print("{0}的分数是:{1}".format(self.name,self.sorce))

s2=Student("www",15)
#下面两句话是一样的
s2.any_score()
Student.any_score(s2)

print(dir(s2)) #可以获得对象所有的属性,方法
print(s2.__dict__)   #对象的属性字典,即当前的属性

class Man: #空语句
    pass

s3=Man()

print(isinstance(s3,Student))  #判断对象是不是指定类型
print(isinstance(s2,Student))


092.类对象

class Stu:
    pass

print(type(Stu))
print(id(Stu))

Stu2=Stu
s1=Stu2()
print(s1)


093.类属性_内存分析创建类和对象的底层

类属性从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值