浅谈有关python的面向对象编程(代码示例)

本篇文章给大家带来的内容是浅谈有关python的面向对象编程(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

一、第一个案例—创建类

#__author:"吉"#date: 2018/10/27 0027#function:# 设计类:'''类名:首字母大写,见名思意属性:驼峰原则行为:见名思意,驼峰法说明:类不占空间,实例化对象占用空间!'''# 格式,object是父类,超类'''类名(object):    属性    行为'''class Peoson(object):    name = 'zhanglei'    age = 24    weight = 70    def run(self):        print("跑!")    def eat(self):        print('吃')

登录后复制

二、使用类实例化对象

#__author:"吉"#date: 2018/10/27 0027#function:# 设计类:'''类名:首字母大写,见名思意属性:驼峰原则行为:见名思意,驼峰法说明:类不占空间,实例化对象占用空间!'''# 格式,object是父类,超类'''类名(object):    属性    行为'''class Peoson(object):    name = 'zhanglei'    age = 24    weight = 70    def run(self):        print("跑!")    def eat(self):        print('吃')    def changeName(self,name):        self.name = name# 实例化对象'''格式:对象名= 类名(参数列表信息)'''peoson1 = Peoson()print(peoson1.name,peoson1.age,peoson1.weight)print(peoson1.eat())print(peoson1.run())# 原理'''变量是在栈区,对象是在堆区。'''

登录后复制

三、访问对象的属性和方法

#__author:"吉"#date: 2018/10/27 0027#function:# 设计类:'''类名:首字母大写,见名思意属性:驼峰原则行为:见名思意,驼峰法说明:类不占空间,实例化对象占用空间!'''# 格式,object是父类,超类'''类名(object):    属性    行为'''class Peoson(object):    name = 'zhanglei'    age = 24    weight = 70    def run(self):        print("跑!")    def eat(self):        print('吃')    def changeName(self,name):        self.name = name# 实例化对象'''格式:对象名= 类名(参数列表信息)'''peoson1 = Peoson()# 访问属性'''变量是在栈区,对象是在堆区。'''print(peoson1.name,peoson1.age,peoson1.weight)peoson1.name = 'jiji'peoson1.age = 33peoson1.weight = 90print(peoson1.name,peoson1.age,peoson1.weight)peoson1.changeName('lala')print(peoson1.name,peoson1.age,peoson1.weight)

登录后复制

四、构造函数

#__author:"吉勇佳"#date: 2018/10/27 0027#function:'''构造函数:__init__() 是在创建类的时候自动调用,不写出这个        构造函数的话,默认是一个空的构造函数什么页不执行。'''class Peoson(object):    def __init__(self,name,age,height,weight):        self.name = name        self.age = age        self.height = height        self.weight = weight    def run(self):        print("跑!")    def eat(self):        print('吃')    def changeName(self,name):        self.name = name# 实例化对象p1 = Peoson("jiyongjia",24,177,78)print(p1.name,p1.age,p1.height,p1.weight)p1.changeName('zhanglei')print(p1.name,p1.age,p1.height,p1.weight)# self 原理'''1、哪个对象调用,self就代表那个对象。 '''

登录后复制

五、self.__class__()的使用创建实例与析构函数

class Peoson(object):    def __init__(self,name,age,height,weight):        self.name = name        self.age = age        self.height = height        self.weight = weight    # 这里是析构函数    def __del__(self):        print("我是析构函数")    def run(self):        print("跑!")    def eat(self):        print('吃')    def changeName(self,name):        self.name = name    # 创建对象函数  self.__class__ 是代表类名的    def createObj(self,name):        p=self.__class__(name,24,56,89)        print(p.name,p.age,p.weight,p.height)# 即 执行p1的一个方法即可创建新的对象。p1 = Peoson("丽丽",33,53,222)print(p1.name,p1.age,p1.height,p1.weight)p1.createObj("狗熊")'''输出:丽丽 33 53 222狗熊 24 89 56我是析构函数我是析构函数'''print(p1.name)

登录后复制

六、__str__()与__repr__()比较

'''重写__str__()    str方法是给用户用的,用于返回用户需要的结果信息、__repr__()   如果换成__repr__()是得到与str相同的结果。是在黑屏终端直接敲对象名再回车的方法    注意:在没有str方法但是有repr的时候,repr 就相当于str,只是repr用于黑屏终端'''class Peoson(object):    def __init__(self,name,age,height,weight):        self.name = name        self.age = age        self.height = height        self.weight = weight    # 这里是析构函数    def __del__(self):        print("我是析构函数")    def run(self):        print("跑!")    def eat(self):        print('吃')    def changeName(self,name):        self.name = name    # 创建对象函数  self.__class__ 是代表类名的    def createObj(self,name):        p=self.__class__(name,24,56,89)        print(p.name,p.age,p.weight,p.height)    # 如果换成__repr__()是得到相同的结果。是在黑屏终端直接敲对象名再回车的方法    def __str__(self):        pass        # return "这里是str"        # return self.name        #返回多个值的话用如下        return "%s-%d-%d" % (self.name,self.age,self.weight)# 如果要打印出所有的属性信息呢?p1 = Peoson("嘉嘉",44,222,336)# 不写def __str__()方法的时候,打印出的是该对象的地址信息print(p1)'''输出:'''# 写了__str__()函数是 打印出的自己需要返回的信息数据,此时p1等价于p1.__str__()print(p1)

登录后复制

七、练习-面向对象作业:

枪设计子弹 设计一次少一个子弹,没子弹了提示无法射击

#__author:"吉"#date: 2018/10/27 0027#function:# 枪设计子弹 设计一次少一个子弹,没子弹了提示无法射击class Gun(object):    def __init__(self,name,bulletNum):        self.name = name        self.bulletNum = bulletNum    def shot(self):        self.bulletNum =self.bulletNum - 1        if self.bulletNum+1 != 0:            print("此枪型号是:%s,此次射击成功!子弹减少1发,余量为:%d" %(self.name,self.bulletNum))        else:            print("*************射击失败,子弹数为0.已经为您子弹加弹5发!请重新射击!**************")            self.bulletNum = 5gun = Gun("AK47",5)# 射击敌人gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()gun.shot()'''输出:此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:4此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:3此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:2此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:1此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:0*************射击失败,子弹数为0.已经为您子弹加弹5发!请重新射击!**************此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:4此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:3此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:2此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:1此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:0*************射击失败,子弹数为0.已经为您子弹加弹5发!请重新射击!**************此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:4'''

登录后复制

 八、如何创建私有属性,在外部无法被访问或者修改

#1 指定私有属性,在外部无法更改:即在属性前加两个下划线 如__money
#2 在python中只有某属性前边有两个下划线的才叫 私有属性,而__money__这种不叫,这是特殊属性。
#3 _money 也不是私有属性,但是当我们看到这样的变量时,我们应该约定俗成的把它看做私有的。本质不是私有,是可以访问的。

# 指定私有属性,在外部无法更改:即在属性前加两个下划线 如__moneyclass Person(object):    def __init__(self,name,age,height,weight,money):        self.name = name        self.age = age        self.height = height        self.weight = weight        self.__money= money    def run(self):        print("跑!")    def eat(self):        print('吃')    def changeName(self,name):        self.name = name    # 创建对象函数  self.__class__ 是代表类名的    def createObj(self,name):        p=self.__class__(name,24,56,89,10000)        print(p.name,p.age,p.weight,p.height,p.__money)# 即 执行p1的一个方法即可创建新的对象。p1 = Person("丽丽",33,53,222,20000)print(p1.name,p1.__money)    #此处出错,在外部无法访问私有

登录后复制

如果想在外边访问的话,可以把私有的属性放在方法里面,调用方法,即可访问私有属性。如:

def run(self):print("跑!")print("工资",self.__money)

登录后复制

总结:访问或者修改私有属性的时候可以通过固定的两个方法来达到修改和访问,同时,方法中可以对数据进行过滤。

# 对于处理私有属性的方法---设置值的方法    def SetMoney(self,money):        if money<0:            print("输入的钱不能小于0")        else:            self.__money = money    # 对于访问私有属性的方法    def GetMoney(self):        return self.__money

登录后复制

# 其实,不能访问__money的原因是因为 python把私有的属性改变为了 _Person__money ,

立即学习“Python免费学习笔记(深入)”;

# 即仍然是可以访问的。但是应该遵循规则,不这么访问,

p1._Person__money = 70    print(p1.GetMoney())

登录后复制

上述是依然还可以把私有属性进行修改。

父类的文件信息:class People(object):    def __init__(self,name,age):        self.name=name        self.age=age子类中调用上边的父类from people import Peopleclass Student(People):    def __init__(self,name,age,faceValue):        # 继承父类的__init__()        super(Student,self).__init__(name,age)        self.faceValue = faceValuestu = Student("玲",22,100)print(stu.name,stu.age,stu.faceValue)输出   玲 22 100# 总结:# 我们发现Student类中并无这两个属性信息,这两个属性是调用的父类的__init__中的属性。# 总结: # 我们发现Student类中并无这两个属性信息,这两个属性是调用的父类的__init__中的属性。

登录后复制

以上就是浅谈有关python的面向对象编程(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2260164.html

(0)
上一篇 2025年2月27日 05:26:30
下一篇 2025年2月27日 05:26:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中is和==有何区别?Python中is和==的区别介绍

    本篇文章给大家带来的内容是关于python中is和==有何区别?python中is和==的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区…

    编程技术 2025年2月27日
    000
  • python中文件操作的相关内容总结(附示例)

    本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文…

    编程技术 2025年2月27日
    200
  • python什么是递归?两种优先搜索算法的实现 (代码示例)

     本篇文章给大家带来的内容是介绍python什么是递归?两种优先搜索算法的实现 (代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。  一、递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递…

    2025年2月27日 编程技术
    200
  • 浅谈python学习之字符编码与字符串

    本篇文章给大家带来的内容是浅谈python学习之字符编码与字符串。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 字符编码是什么? 例如汉字“中”,可以用以下表示 十进制:20013 二进制:01001110 001011…

    编程技术 2025年2月27日
    200
  • python中numpy的array数据类型有哪些?(代码详解)

    本篇文章给大家带来的内容是介绍python中numpy的array数据类型有哪些?(代码详解)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 import numpy as np#创建# 创建一维数组a = np.arr…

    编程技术 2025年2月27日
    200
  • python数据竖着怎么变横的?

    python数据竖着变横的的方法:使用zip()函数,类似矩阵转置的过程,将竖状数据变为横状数据;语法“zip([iterable, …])”。该函数将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 pytho…

    2025年2月27日
    200
  • python tuple有什么用

    Python中tuple(元组)的作用:作为参数传递给函数调用、或是从函数调用那里获得参数时,保护其内容不被外部接口修改。通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。 Python是一种计算机程序语…

    2025年2月27日 编程技术
    200
  • 初学python看什么书?

    初学python可以看:《Python编程:入门到实践》、《Python基础教程》、《笨办法学Python》、《Python语言及其应用》、《Python编程入门》、《父与子的编程之旅:与小卡特一起学Python 》等等。 Python入门…

    2025年2月27日 编程技术
    200
  • python能做回归么

    Python可以实现线性回归,实现方法:1、在scikit-learn库中调用linear_model来拟合数据;2、使用Scipy.polyfit()或者numpy.polyfit();3、使用高度专业化的线性回归函数Stats.linr…

    2025年2月27日
    200
  • python 的& 表示什么

    python代码里经常会需要用到各种各样的运算符,这里我将要和大家介绍的是python中的&,想知道他是什么意思吗?那就和小编一起来了解一下吧。 &是位运算符-与,类似的还有|(或),!(非)。 整数在计算机中用二进制的位来…

    2025年2月27日
    200

发表回复

登录后才能评论