首页 > 编程语言 >python--类与面向对象-2

python--类与面向对象-2

时间:2024-03-14 11:29:29浏览次数:21  
标签:__ name 面向对象 python self Person -- init print

类与面向对象中一些重要函数讲解

一、对象在文本中的输出

class Person:

        def __init__(self,name,agg,live_value,money):

                self.name=name

                self.agg=agg

                self.live_value=live_value

                self.money=money

        def describe():       

                print('%s的攻击力是%s'%(self.name,self.agg))

p=Person('bob',10,10000,100)

b=Person('tony',10,10000,100)

print(p.describe())

print(b.describe())

 %s可以将要输出的内容转化为字符串形式输出,而后面的属性就是我们要输出的内容,也是对位输出

二、init函数详解

class Person:

        def __init__(self,name,agg,live_value,money):

                self.name=name

                self.agg=agg

                self.live_value=live_value

                self.money=money

        

        def describe():       

                print('%s的攻击力是%s'%(self.name,self.agg))

p=Person('bob',10,10000,100)

b=Person('tony',10,10000,100)

print(p.describe())

print(b.describe())

                

        这个函数可以叫做__init__方法,也称之为构造方法。

        __init__函数是面向对象编程中的特殊方法,当创建一个类的实例时,__init__方法可以自动调用。

(1)self

class Person:

        def __init__(self,name,agg,live_value,money):

                self.name=name

                self.agg=agg

                self.live_value=live_value

                self.money=money

        

        def describe():       

                print('%s的攻击力是%s'%(self.name,self.agg))

p=Person('bob',10,10000,100)

b=Person('tony',10,10000,100)

print(p.describe())

print(b.describe())

                

举例子:1、b和p是我们定义的两个对象

              2、b和p两个对象想要使用类里面的属性就需要有一个在类里面的身份

              3、self就是b和p在类里面的身份,self翻译过来就是本身的意思。

              4、我们要将对象传递给self才能拥有这个在类里面的身份,要将属性传递给类里面的属性才方便进行多对象输出。

                这里将对象传递给self有两种方法         

                (1)第一种,p.describe(),这种__init__函数就自动调用这个对象了

                (2)第二种,Person.describe(b),这种需要手动调用

                                    

(2)类名

        我们知道定义一个类就需要有一个类名,类名的命名原则遵从我们之前讲过的大驼峰原则,当然,不用大驼峰也不会报错。

(3)面向对象的属性

            面向对象的属性是由__init__函数后面的形参赋予的,这个形参是个默认值,真正具体的某个对象的参数还需要某个对象具体进行传参。

        举例子:为了方便理解,我们也可以把__init__函数后面的对像想像一下,比如你在打王者荣耀的时候,是不是每个角色都有血条框,技能框,普攻键,以及回复按钮,回城按钮等。那么这是怎么实现的,为了方便代码执行,不可能一个一个角色进行编码,就是用到面向对象的方法定义了一个类,然后再通过对象传参进行实现的。当然我这说的比较浅显,肯定没我想的那么简单,仅仅举个例子作为参考。

(4)self.形参名

        self.形参名=形参名,这种方式是面向对象传递属性用的。

        self.形参名=固定值,这种方式就会使得无论你传递的形参名是多少,最后输出结果都是这个固定值,不实用。

__init__函数,详情参考:

       【知识点】python的__init__详解_python __init__-CSDN博客

       三、查看对象所有属性函数__dict__

        print(p.__dict__)

  

讲了这么多那么到底类与面向对象有什么用?

相信大家也看出来了,用处其实主要还是在于多重对象有同一属性的时候我们不可能去给他一个一个编码出来,那么我们定义一个大类就可以实现多重对象属性的传参,减少代码量,大大提高工作效率。

小练习:


练习1:
在终端输出:
吕布,方天画戟,男,爱吃KFC
吕布,方天画戟,男,喜欢吃鸡腿
吕布,方天画戟,男,比较勇猛
老王,金箍棒,男,爱吃KFC
老王,金箍棒,男,喜欢吃鸡腿
老王,金箍棒,男,比较勇猛

练习2:
定义一个圆类,计算圆的面积和周长

 

答案: 

class Person:
    def __init__(self,name,weapon,like):
        self.name=name
        self.weapon=weapon
        self.like=like

    def info(self):
        print('%s,%s,%s,爱吃KFC'%(self.name,self.age,self.sex))
        print('%s,%s,%s,喜欢吃鸡腿'%(self.name,self.age,self.sex))
        print('%s,%s,%s,比较勇猛'%(self.name,self.age,self.sex))

p=Person('吕布','方天画戟','男')
p.info()
p1=Person('老李','金箍棒','男')
p1.info()

from math import pi

class Cricle:
    def __init__(self,r):
        self.r=r
        #self.pi=3.14
    def area(self):
        a=pi*self.r**2
        return a
    def perimeter(self):
        p=2*pi*self.r
        return p

c=Cricle(5)
print(c.area())
print(c.perimeter)

标签:__,name,面向对象,python,self,Person,--,init,print
From: https://blog.csdn.net/2302_81156108/article/details/136689384

相关文章

  • ZYNQ自定义IP并使用
    目的:自定义一个IP并添加到设计中使用(产生PWM波形)在ZYNQ系统中将许多特定功能的硬件设计模块封装起来称为IP核,类似于库函数。这种方式极大的提高了设计效率。当遇到设计中的一些特殊的需求且官方没有对应的IP时就需要我们自定义IP来使用。 创建步骤:1、创建新IP进入viv......
  • MeterSphere接口自动化系列之动态设置全局变量
    一、问题描述:    所有场景接口参数中需要token,token是由登录生成,每次登录后token会改变,该如何动态获取token并提供给后续场景使用?二、问题分析:    针对该问题,需要考虑,每个场景执行前登录一次,还是所有场景执行前只登录一次。    基于上述的分析,......
  • python装饰器
    一:什么是装饰器器:指的是工具,可以定义为函数装饰:指的是为其他事物添加额外的东西点缀装饰器:指的是定义一个函数,该函数是用来给其他函数添加额外的功能二、为什么要用装饰器开放封闭原则:开放:指的是对拓展功能是开放的封闭:指的......
  • PING命令 获取的TTL值 注册表位置
    对TTL进行伪装或隐藏是一种网络欺骗技术,通常用于隐匿数据包的传输路径或减少网络攻击的暴露。以下是一种可能的方法和基础技术原理:使用代理服务器:通过设置代理服务器来修改数据包的TTL值,然后再将其发送到目标服务器。代理服务器会在转发数据包时更改TTL的值,使得接收方无......
  • epoll用法
    1.创建socketfd和epoll//创建epollfd.intepfd=epoll_create(1); intsockfd=socket(AF_INET,SOCK_STREAM,0);2.绑定端口号structsockaddr_inserveraddr;serveraddr.sin_family=AF_INET;serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);se......
  • 后端搞 Cocos 小游戏开发的三点避坑指北
    前言    先说一下我为什么要弄小游戏吧,首先无关工作,也无关兴趣,就只是想在副业里探索一下。没错就是做一个单机的小游戏上架到平台试一下水(薅广告费),不过说实话入局有点晚。    早在2019年的时候,我也折腾过白鹭引擎还弄过小demo,当时上架平台也简单。但是不知道为......
  • php-构建自己的composer包
    【windows】版1.安装composer,选择PHP版本https://getcomposer.org/Composer-Setup.exe2.安装githttps://objects.githubusercontent.com/github-production-release-asset-2e65be/23216272/2d1c35e2-ece0-4287-bc51-b221f43922b4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Cred......
  • 如何在Nginx服务器上配置访问静态文件目录并提供文件下载功能
    引言在搭建网站的过程中,我们经常需要让访客通过URL直接访问或下载存储在服务器特定目录下的静态文件。本文将详细介绍如何在Nginx服务器环境中配置一个名为"download"的文件目录,以便用户能够通过浏览器访问并下载其中的手册和其他文档。1.目录结构与权限设置首先,请确保您的Ngi......
  • FineReport学习(三)——动态隔间运算
     核心公式:显示列[显示列的父列:偏移量] 动态格间运算案例,数据集使用默认FRDemo.db库的订单表SELECTSTRFTIME('%m',订购日期)AS月份,应付金额FROM订单WHERESTRFTIME('%Y',订购日期)='2011' 模板样式设计,这里注意B2单元格,采用汇总求和1)绝对层次运算:显示列[显......
  • PG14:adminpack 插件源码分析
    adminpack提供了大量支持功能,pgAdmin和其他管理工具可以使用这些功能提供额外功能,例如远程管理服务器日志文件。默认情况下,只有数据库超级用户才能使用所有这些功能,但其他用户也可以使用GRANT命令使用这些功能。我们先来看一下他支持的函数,可以通过\dx+adminpack来进行查......