Python面向对象

类和对象

类是一个抽象的概念,可以理解成一个名词来代替,比如:电视就是一个类,那么如果说我家的电视那么这个定义就变成了实例化对象。

类是抽象的定义,通过实例化类可以实例化出来一个对象供我们使用。
优点:出去大量重复性的定义,比如可以把一个人的信息封装在一个类里面。

class Person(object):
    def eat(self):
        print('eat')
    def sleep(self):
        print('sleep')
    def study(self):
        print('study')

Mike = Person()
Mike.eat()
Mike.sleep()
Mike.study()

在这里插入图片描述
当然可以实例化出来多个对象来进行使用。

类中的函数

一个类中可以定义方法(也就是函数的意思,通常把它叫做方法)也可以定义变量以供使用,这里先介绍普通的函数,参见上面的代码,可以传递参数等操作,但必须是实例化对象才能使用。

构造函数
如果不显示的定义一个类的构造函数默认是:

class Person(object):
    def __init__(self):
        pass

构造函数的作用是规定在实例化一个对象的时候必须传入的参数,举个例子,我们在定义一个人的个人信息的时候,就肯定需要这个人的一些基本信息。

class Person(object):
    def __init__(self,name,age,sex,tall,weight):
        self.age = age
        self.sex = sex
        self.tall = tall
        self.weight = weight
        self.name = name

    def Print(self):
        print('{}:{}岁 {} {}高 {}kg'.format(self.name,self.age,self.sex,self.tall,self.weight))

Mike = Person('Mike',18,'boy',186,65)
Mike.Print()

在这里插入图片描述
构造函数是一个很重要的函数,在构造函数中定义好需要用到的参数将会方便很多。

self关键字
注意到类中的函数之中有一个参数叫self(翻译过来就是自己、自身)这个参数不需要我们去传递,是一个内置的参数,它的作用就是用来调用自身的内部变量
我们在Person类内部定义了一个变量age,那么在这个类内部中就用 self.age 来调用它。

当然和java类似可以写成this,但类中的第一个参数必须是self/this,不然会报错。

类方法、实例方法、静态方法、析构方法

实例方法:顾名思义就是实例化之后才能进行引用的方法。

class Person(object):
    def get_name(self):
        return 'Mike'
    def get_age(self):
        return 18

people1 = Person()
people1_name = people1.get_name()
people1_age = people1.get_age()
print(people1_name,people1_age)

静态方法:不需要实例化就可以进行调用,去掉self在上方用 @staticmethod声明一下这是一个静态方法。

class Person(object):
    def get_name(self):
        return 'Mike'
    def get_age(self):
        return 18

    @staticmethod
    def help():
        print('This is a person')
Person.help()

在这里插入图片描述
类方法:和静态方法相似,声明的方式有所不用而已,习惯上还是使用静态方法。

class Person(object):
    name = 'Mike'
    @classmethod
    def printName(cls):
        print(cls.name)

Person.printName()

析构方法:当程序结束或者对象被销毁的时候才进行调用
class Person(object):
name = ‘Mike’
def printName(self):
print(self.name)
def del(self):
print(‘del…’)

Mike = Person()
Mike.printName()
在这里插入图片描述
可以看到,当这个代码中并没有执行 del 函数但是在程序结束的时候它会自动执行,来释放这个实例化方法在内存中的空间。

继承

在上面所有类的定义中我们会发现在 class xxx(object) 括号中都会有一个object,那是因为所有的类都是继承自一个共同的父类 object,同样其他类之间的继承也参见这种方式。

class Person(object):
    def run(self):
        print('%s is run' % self.name)
class Man(Person):
    name = 'Mike'
Mike = Man()
Mike.run()

在这里插入图片描述
可以看到并没有去显示的在 Man 类中定义 run 方法,但是从Person中继承过来的类方法可以直接进行使用。

一些其他的

支持方法覆盖
不支持多态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值