【python】类创建、实例化和调用类方法、子类、继承、私有属性、静态方法

一、类属性:定义在类中函数外的属性;self代表类的实例。

其中 number属于类属性,name、age属于实例属性;实例属性一般在初始函数中定义。

class people:
    number=300  #类属性
    def __init__(self,name,age):#初始化方法 左右两个下划线
        self.name=name
        self.age=age
    def display(self):
        print('number=:',people.number)
    def display_name(self):
        print(self.name)
    def display_age(self):
        print(self.age)

其中self一定要写。

二、实例化和调用类方法
#实例属性只能通过实例名访问
shili=people('yuyuanyuan',80)#类方法的调用
print(shili.age)
print("-----------------------------")
print(shili.number)
print("-----------------------------")
print(shili)
print("-----------------------------")
shili.display()#调用类方法
shili. display_age()
shili.name = 'hello'   #属性可以改变
print(shili.name)

结果:

python中除了可以通过类名称访问类属性,还可以动态地为类和对象添加属性、也可以修改类属性 

people.arm = '有两个梨涡'
print(shili.arm)
#结果:有两个梨涡

类的创建:

class Love:
    "节日类"
    def __init__(self,name,love):
        print(name)
        print(love)
love='love'
name='you'
yyy=Love(love,name)

 结果:

三、类的继承
#子类的定义
class Parent:
    number=100
    def __init__(self):
        print("调用父类构造函数")
    def parentM(self):
        print('调用父类方法')
    def newM(self):
        print('另一个父类新的方法')
class child(Parent):
    number=200
    def __init__(self):
        print('调用子类构造函数')
    def childM(self):
        print('调用子类方法')
    def newM(self):
        print('若函数名字相同,则子类重写此方法')

 (1)子类实例应用

#子类实例应用
c = child()  #生成子类实例
c.childM()   #调用子类方法
c.parentM()  #调用父类方法,此方法子类中没有。
c.newM()    #子类和父类都有这个方法,那就调用子类的方法。

 结果:

四、访问限制 

    在类的内部可以定义属性和方法,而在类的外部则可以直接调用属性或方法来操作数据,从而隐藏了类内部的复杂逻辑。但python并没有对属性和方法的访问权限进行限制。为了保证类内部的某些属性或方法不被外部所访问,可以在属性或方法名前添加双下划线或首尾添加双下划线,从而限制访问权限。
#1.首尾双下划线表示定义特殊方法,一般是系统定义名字,如__init__()
#2.双下划线表示private(私有)类型的成员,只允许定义该方法的类本身进行访问,而不能通过类的实例进行访问,但可以通过“类的实例名._类名__***”方式访问。

class People:  # 创建一个人类
    """人类"""
    __eye = '有两只爱笑的眼睛'
    def __init__(self):  # 构造方法
        print('__init__():', People.__eye)  # 在实例方法中访问私有属性
man = People()  # 创建People类的实例
print('加入类名:', man._People__eye)  # 私有属性,可以通过"实例名._类名__xxx"方式访问
print('直接访问:', man.__eye)  # 私有属性不能通过实例名访问,出错

五、静态方法

 静态方法是定义在类上的方法,它可以通过类或者类的实例来调用。静态方法使用@staticmethod装饰器进行标识,它不需要类或实例作为第一个参数。与类方法不同,静态方法不能访问类或实例的属性和方法

class MyClass:

    @staticmethod
    def my_static_method(arg1, arg2):
        print("Static method called with args:", arg1, arg2)


MyClass.my_static_method(1, 2)
# 输出:Static method called with args: 1 2

obj = MyClass()
obj.my_static_method(3, 4)
# 输出:Static method called with args: 3 4

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/389091.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

就是民族的气节

我们拥有一个名字叫中国 - 张明敏 一把黄土塑成千万个你我 静脉是长城 动脉是黄河五千年的文化是生生不息的脉搏(齐楚燕韩赵魏秦)提醒你 提醒我我们拥有个名字叫中国(中原地区为主体,河南,山东,安徽&…

语言与真实世界的关系(超级语言生成能力将促进世界深刻变化)

语言与真实世界之间存在着紧密且复杂的关系。在人类社会中,语言是认知、表达和交流现实世界的主要工具,它帮助我们构建并理解周围环境,并将我们的思维和经验概念化。 1. 符号与指代: 语言是一种符号系统,通过词汇、句…

【精选】Java面向对象进阶——接口

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

(11)Hive调优——explain执行计划

一、explain查询计划概述 explain将Hive SQL 语句的实现步骤、依赖关系进行解析,帮助用户理解一条HQL 语句在底层是如何实现数据的查询及处理,通过分析执行计划来达到Hive 调优,数据倾斜排查等目的。 官网指路: https://cwiki.ap…

第14讲投票帖子详情实现

投票帖子详情实现 后端,根据id查询投票帖子信息: /*** 根据id查询* param id* return*/ GetMapping("/{id}") public R findById(PathVariable(value "id")Integer id){Vote vote voteService.getById(id);WxUserInfo wxUserInfo wxUserInf…

【Go语言】第一个Go程序

第一个 Go 程序 1 安装 Go Go语言官网:Download and install - The Go Programming Language,提供了安装包以及引导流程。 以 Windows 为例,进入windows安装包下载地址:All releases - The Go Programming Language&#xff0c…

BDD - Python Behave 用户自定义配置文件

BDD - Python Behave 用户自定义配置文件 引言默认 behave.ini 配置文件自定义配置文件json 格式的配置文件ini 格式的配置文件 实例应用项目结构代码BDD/Features/user_data.feature 文件BDD/steps/user_data_steps.py 文件BDD/environment.py 文件默认配置文件 behave.ini自定…

构建智慧交通平台:架构设计与实现

随着城市交通的不断发展和智能化技术的迅速进步,智慧交通平台作为提升城市交通管理效率和水平的重要手段备受关注。本文将探讨如何设计和实现智慧交通平台的系统架构,以应对日益增长的城市交通需求,并提高交通管理的智能化水平。 ### 1. 智慧…

Spring 用法学习总结(二)之基于注解注入属性

Spring学习 5 基于注解方式创建对象6 基于注解注入属性 5 基于注解方式创建对象 注解是代码的特殊标记,可以简化xml配置,格式:注解名称(属性名称属性值),可以作用在类、方法、属性上 以下注解都可以创建bean实例 Com…

【Qt】qt常用控件之QIcon 以及 qrc机制设置图片路径(QtCreator)

文章目录 1. QIcon / windowIcon2. setIcon() 与 setwindowIcon()2.1 setIcon() 介绍与使用2.2 setWindowIcon 介绍与使用 3. 路径问题 & qrc机制的引入3.1 绝对路径 / 相对路径 的问题3.2 qrc机制3.3 在QtCreator下利用qrc机制引入图片 1. QIcon / windowIcon QIcon QIco…

Java学习第十四节之冒泡排序

冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置 //2.每一次比较,都会产生出一个最大,或者最小的数字 //3.下一轮则可以少…

009集——磁盘详解——电脑数据如何存储在磁盘

很多人也知道数据能够保存是由于设备中有一个叫做「硬盘」的组件存在,但也有很多人不知道硬盘是怎样储存这些数据的。这里给大家讲讲其中的原理。 首先我们要明白的是,计算机中只有0和1,那么我们存入硬盘的数据,实际上也就是一堆0…

WMS仓库管理系统:一文掌握,不懂的的看过来。

本期B端系统扫盲带来WMS系统,这个的应用也非常常见,贝格前端工场力争用浅显的语言将此系统介绍清楚,如有系统升级和定制需求的可以单独沟通,闲言少叙开整。 一、WMS系统的定义 WMS是Warehouse Management System的缩写&#xff…

平时积累的FPGA知识点(9)

平时在FPGA群聊等积累的FPGA知识点,第9期: 31 ldpc的license是什么? 解释:Xilinx公司的Zynq UltraScale RFSoC系列芯片进行项目开发,在某些芯片型号中,自身带有SD-FEC硬核资源,具体查询方式&a…

算法学习——LeetCode力扣贪心篇4

算法学习——LeetCode力扣贪心篇4 763. 划分字母区间 763. 划分字母区间 - 力扣(LeetCode) 描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足&#xf…

找负环(图论基础)

文章目录 负环spfa找负环方法一方法二实际效果 负环 环内路径上的权值和为负。 spfa找负环 两种基本的方法 统计每一个点的入队次数,如果一个点入队了n次,则说明存在负环统计当前每个点中的最短路中所包含的边数,如果当前某个点的最短路所…

MySQL数据库基础(三):Linux系统下的MySQL安装与使用

文章目录 Linux系统下的MySQL安装与使用 一、MySQL部署安装 1. 卸载自带的MySQL8 2. 删除自带配置文件 3. 下载MySQL源 4. 安装MySQL源 5. 使用yum安装MySQL 6. 获取默认密码 7. 登录MySQL 8. 修改密码 二、登陆MySQL数据库 1、本地(针对本地MySQL&…

备战蓝桥杯---数据结构之好题分享1

最近几天在刷学校的题单时,发现了几道十分巧妙又有启发性的题,借此来记录分享一下。 看题: 从整体上看似乎没有什么规律,于是我们从小地方入手,下面是图解: 因此,我们用栈的数据结构实现即可&a…

[职场] 求职如何设置预期 #笔记#经验分享

求职如何设置预期 在求职的道路上,无论处于哪个年龄阶段,合理的就业期望值才能使我们的愿望与社会的需求相吻合,才能让自己在今后的工作中发挥出最大的实力与能力。 一、结合测评软件,明确求职目标 根据霍兰德职业兴趣测试结果&a…

Sibelius安装包免费下载激活指南,西贝柳斯,专业作曲打谱软件

Sibelius来自芬兰音乐巨匠西贝柳斯的故乡,被誉为世界上最强的五线谱软件。Sibelius功能全面、音色音质精准受到广大作曲家的喜爱。其乐谱记号十分全面,所有的乐谱都可以应付自如,Sibelius可以迅速完成作曲、编曲、发布任务,轻松开…
最新文章