ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面向对象

2022-07-24 17:01:13  阅读:103  来源: 互联网

标签:__ name self 面向对象 实例 print def


面向对象编程:oop【object oriented programming】
是一种python的编程思路,关注设计思维,关注点:怎么做

面向过程:按照解决问题的步骤去写代码
在思考问题时,首先分析‘怎么按照步骤去实现’,然后将问题解决拆解若干个步骤,并将这些步骤对应成方法一步一步的最终完成 关注点:谁来做

类:是具有一组相同或者相似特征【属性】和行为【方法】的一系列对象的集合

对象:是实实在在的一个东西,类的具体化
类是对象的抽象化,对象是类的实例化

类(Class)的组成:
类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法(行为)

#定义类和对象
#创建类
class Person:
    age=18
    height=1.75
    weight=60
    def eat(self):#实例方法:在类内部,使用def关键字定义,第一个参数默认是 self【可以是其他名字】,但位置必须占有
        print('吃饭')
    def run(self):
        print('跑步')
#创建对象:对象名=类名()
xm=Person()#类的实例化
xm.eat()#调用函数
print('年龄是:{}'.format(xm.age))

# 属性:在类的内部定义的变量【类属性】
#在方法内部定义的变量【通过类似self.变量】,是实例属性

 

---new函数执行---
----init函数执行------
self=3008833508016
小王喜欢吃西瓜 专业是通信

 

class Animal:
    def __init__(self,name):
        self.name=name
        print('这是构造初始化方法')
        pass
    def __del__(self):
        print('当在某个作用域下面,没有被引用的情况下,解释器会自动调用此函数来释放内存空间')
        print('这是析构方法')
        print('%s 这个对象被彻底清理了,内存空间被释放'%self.name)

cat=Animal('Kitty')
del cat #手动清理对象,会执行del 函数
# print(cat.name)  会报错,cat已被清除
input('程序等待中--')

# 总结
# 1.程序执行完后,会自动调用del方法
# 2 当对象被手动销毁时也会自动调用del方法
# 3.析构函数一般用于资源回收,利用del方法销毁对象回收内存等资源

  

吃饭
年龄是:18
class People:
    def __init__(self,name,sex,age):#默认调用,初始化参数值
        #实例属性
        self.name=name
        self.sex=sex
        self.age=age
    def eat(self):
        print('喜欢吃榴莲')
    pass
# xq=People()
# xq.eat()
# xq.name='小明'
# xq.age=18
# print('{}的年龄是:{}'.format(xq.name,xq.age))
zp=People('张鹏','男生',18)
print(zp.name,zp.sex,zp.age)

#init
# python内置函数,特点:两边是双下划线【魔术方法】
# 初始化方法,用来定义实例属性,初始化函数,在创建对象自动调用,不用手动去调用
# 利用传参的机制可以让我们定义功能更加强大且方便

 

张鹏 男生 18

 

class Person:
    def __init__(self,pro):
        self.pro=pro
        pass
    def eat(self,name,food):
        print('self=%s'%id(self))
        print('{}喜欢吃{} 专业是{}'.format(name,food,self.pro))
        pass
    pass
xw=Person('通信')
print('self=%s'%id(xw))
xw.eat('小王','西瓜' )
#self 只有在定义  实例方法的时候才有意义,在调用时候不必传入相应的参数,而是由解释器自动去指向
#self名称是可以更改的,可以定义成其它的名字。
#self指的是类实例对象本身,相当于Java中的this

 

self=2269554537192
self=2269554537192
小王喜欢吃西瓜 专业是通信

 

#__str__:
class Person:
    def __init__(self,pro,name,food):
        self.pro=pro
        self.name=name
        self.food=food
        print('----init函数执行------')
        pass
    def eat(self,name,food):
        print('self=%s'%id(self))
        print('{}喜欢吃{} 专业是{}'.format(self.name,self.food,self.pro))
        pass
    pass
    def __str__(self):#自定义对象内容格式
        return '{}喜欢吃{} 专业是{}'.format(self.name,self.food,self.pro)

    ##创建对象实例的方法,每调用一次就会生成一个新的对象#
    # cls:class的缩写#
    def __new__(cls, *args, **kwargs):
        print('---new函数执行---')
        return object.__new__(cls)#在这里是真正创建对象实例的,必须有retur关键字
        pass
    pass

xw=Person('通信','小王','西瓜')
print('self=%s'%id(xw))
# xw.eat('小王','西瓜' )
print(xw)
#先执行new对象,再执行init
# new 类的实例化方法,必须有return,否则对象创建失败,至少有一个参数cls,代表要实例化的类
# init 用来数据属性初始化工作,实例构造方法,接受类的实例

 

这是构造初始化方法
当在某个作用域下面,没有被引用的情况下,解释器会自动调用此函数来释放内存空间
这是析构方法
Kitty 这个对象被彻底清理了,内存空间被释放
程序等待中--

  

 

标签:__,name,self,面向对象,实例,print,def
来源: https://www.cnblogs.com/chenyiming123/p/16514823.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有