面向对象(类、对象以及魔法方法)

一、面向对象的基本介绍

面向过程与面向对象的区别

面向过程:根据业务逻辑从上到下写代码

面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程

面向对象编程

面向对象编程,是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作有应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用

二、类和对象

类与对象的关系

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征的行为的一组对象抽象定义,提出了另外一个新的概念——类

类的构成

类(Class)由三个部分构成

1.类的名称:类名

2.类的属性:一组数据

3.类的方法:允许对进行操作的方法(行为)

三、定义类

格式

下面代码中定义的两种类,一种是经典类,一种是新式类;object是python里所有类的最顶级父类

class 类名:
    方法列表
#定义一个Hero类(经典类)
class Hero():
    def  info(self):
        print("朋友们好")


#定义一个Hero类(新式类)
class Hero(object):
    def info(self):
        print("朋友们好")

四、创建对象

# 创建对象demo
class Hero(object):  #新式类定义形式
    """info是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self"""
    def  info(self):
        """当对象调用实例方法时,python会自动将对象本身的引用作为参数,传递到实例方法的第一个参数self中"""
        print(self)
        print('self各不同,对象是出处')
# Hero这个类实例化了一个对象app
app=Hero()
# 对象调用实例方法info(),执行info()里的代码
# 表示选择属性或者方法
app.info()
print(app)   #打印对象,则默认打印对象在内存的地址,结果等同于info里的prin(self)
print(id(app)) #id(app)则是内存地址的十进制形式表示

五、添加和获取对象的属性

class App(object):
    def app01(self):
        print("第一个函数")
    def app02(self):
        print("第二个函数")
app=App()
app.app1="李明"
app.app2=18
app.app3=140
print("我叫%s,我今年%d岁" % (app.app1,app.app2))
print("我叫%s,我今年%d厘米" %(app.app1,app.app3))

六、实例方法通过self获取对象属性

对象创建并添加属性后,可在类的实例方法中使用self获取属性

class App(object):
    def app01(self):
        print("第一个函数")
    def app02(self):
        print("第二个函数")
    def app03(self):
        print("我叫%s,我今年%d岁" % (self.app1, self.app2))
        print("我叫%s,我今年%d厘米" % (self.app1, self.app3))
app=App()
app.app1="李明"
app.app2=18
app.app3=140
app.app03()

七、魔法方法(__init__)

__init__()方法,在创建一个对象时默认被调用,不需要手动调用__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。

class App(object):
    def __init__(self,app1,app2,app3):
        self.app1=app1
        self.app2=app2
        self.app3=app3
    def app01(self):
        print("第一个函数")
    def app02(self):
        print("第二个函数")
    def app03(self):
        print("我叫%s,我今年%d岁" % (self.app1, self.app2))
        print("我叫%s,我今年%d厘米" % (self.app1, self.app3))
app=App('李明',18,140)
app.app03()

八、魔法方法(__str__)

当使用print输出对象的时候,默认打印对象的内存地址如果类定义了__str__(self)方法,那么就会打印从在这个方法中 return 的数据

__str__方法通常返回一个字符串,作为这个对象的描述信息

class App(object):
    def __init__(self,app1,app2,app3):
        self.app1=app1
        self.app2=app2
        self.app3=app3
    def app01(self):
        print("第一个函数")
    def app02(self):
        print("第二个函数")
    def __str__(self):
        return ("我叫%s,我今年%d岁" %(self.app1,self.app2))
app=App('李明',18,140)
print(app)

九、魔法方法(__del__)

当使用print输出对象的时候,默认打印对象的内存地址如果类定义了__str__(self)方法,那么就会打印从在这个方法中 return 的数据

__str__方法通常返回一个字符串,作为这个对象的描述信息

class Hero(object):
    def __init__(self,name):
        print("__init__方法被调用")
        self.name=name
    def __del__(self):
        print("__del__方法被调用")
        print("%s被GM干掉了" %self.name)
app=Hero("泰达米尔")
print("%d被删除1次" %id(app))
del(app)
print("*"*40)
app2=Hero("盖伦")
app3=app2
app4=app2
print("%d被删除1次" %id(app2))
del(app2)
print("%d被删除1次" %id(app3))
del(app3)
print("%d被删除1次" %id(app4))
del(app4)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值