当前位置: 首页 > article >正文

Class 类

    • 1、私有变量
    • 2、私有方法
    • 3、对象关联

Class Abc(object):
	def xxx():
		pass

Class Abc:
	def xxx():
		pass

1、私有变量

类变量可以被外部调用并改动值

class Cat(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "我的名字叫{},今年{}岁".format(self.name,self.age)

xiaobai = Cat("小白",10)
print(xiaobai)

xiaobai.age=20
print(xiaobai)

在这里插入图片描述
此时小白的年龄会被改动,为了防止这种在外部改动的方法,我们可以使用私有属性,__xxx ,定义对象时在前面加上两个_即可,此时该属性(__xxx)只能被该类里面的方法去调用

# -*- coding: utf-8 -*-

class Cat(object):
    def __init__(self, name, age):
        self.name = name
        self.__age = age

    def __str__(self):
        return "我的名字叫{},今年{}岁".format(self.name,self.__age)

    def change_age(self, new_age):
        self.__age = new_age


xiaobai = Cat("小白",10)
print(xiaobai)

xiaobai.age=20
print(xiaobai)

# 此时调用内部方法去改动
xiaobai.change_age(12)
print(xiaobai)

在这里插入图片描述
可以看到小白年龄被成功修改

2、私有方法

跟私有对象同理,不能直接 类名.__方法调用
在这里插入图片描述
此时会报错找不到这个__change_age方法,该方法是私有方法,只能被类里面的其他方法调用,例如change_age_new

# -*- coding: utf-8 -*-

class Cat(object):
    def __init__(self, name, age):
        self.name = name
        self.__age = age

    def __str__(self):
        return "我的名字叫{},今年{}岁".format(self.name,self.__age)

    def __change_age(self, new_age):
        self.__age = new_age

    def change_age_new(self, new_age):
        if new_age > 0:
            self.__change_age(new_age)

xiaobai = Cat("小白",10)
print(xiaobai)


xiaobai.change_age_new(-5)
print(xiaobai)

xiaobai.change_age_new(20)
print(xiaobai)

在这里插入图片描述

3、对象关联

例如 有一个班级叫 room3-2 ,班里有 张三、李四、王五、郑六四位学生,班级与学生存在关联关系
在这里插入图片描述
此时我们给班级新建一个方法,用于 添加学生进入班级
在这里插入图片描述
则可以通过班级类查看学生类下信息,person.name实际调用的是student类中的self.name属性


http://www.kler.cn/a/228668.html

相关文章:

  • 【KOA框架】koa框架基础及swagger接口文档搭建
  • 浅谈计算机网络03 | 现代网络组成
  • 先进制造aps专题二十七 西门子opcenter aps架构分析
  • 前端开发中的状态管理与网络请求封装
  • 【算法】算法基础课模板大全——第一篇
  • 数据库服务体系结构
  • SpringBoot实战项目第一天
  • 为什么选择AGPL3.0开源协议
  • ROS从入门到精通4-1:Docker安装与常用命令总结
  • Windows自动化实现:系统通知和任务栏图标自定义
  • jmeter-04创建请求
  • 类银河恶魔城学习记录1-5 CollisionCheck源代码 P32
  • 2024 高级前端面试题之 性能优化模块 「精选篇」
  • 华为机考入门python3--(8)牛客8-合并表记录
  • RedHat8.4安装邮件服务器
  • Redis核心技术与实战【学习笔记】 - 17.Redis 缓存异常:缓存雪崩、击穿、穿透
  • BUG:docker启动之后直接退出问题
  • C++面试:数据库的连接池管理
  • docker-compose部署laravel项目实战(主机nginx连接项目容器)(详细配置过程)
  • SpringBoot 集成 WebSocket,实现后台向前端推送信息
  • 利用jmeter完成简单的压力测试
  • 贪心算法(简单易懂,考研复试上机知识点)
  • 保护个人信息安全,避免成为“互联网中的裸泳者”
  • 代码随想录算法训练营第27天| 39. 组合总和、40.组合总和II、131.分割回文串
  • 教师培训内容有哪些方面 本体知识和能力要求
  • 19.HarmonyOS App(JAVA)依赖布局DependentLayout使用方法