Python-基础篇-类与对象/面向对象程序设计-py脚本

面向对象基础

第一个面向对象

class Cat:def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫要喝水")# 创建猫对象
tom = Cat()tom.eat()
tom.drink()print(tom)addr = id(tom)
print("%x" % addr)

新建两个猫对象

class Cat:def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫要喝水")# 创建猫对象
tom = Cat()tom.eat()
tom.drink()print(tom)# 再创建一个猫对象
lazy_cat = Cat()lazy_cat.eat()
lazy_cat.drink()print(lazy_cat)lazy_cat2 = lazy_catprint(lazy_cat2)

设置对象属性

class Cat:def eat(self):# 哪一个对象调用的方法,self就是哪一个对象的引用print("%s 爱吃鱼" % self.name)def drink(self):print("%s 要喝水" % self.name)# 创建猫对象
tom = Cat()# 可以使用 .属性名 利用赋值语句就可以了
tom.name = "Tom"tom.eat()
tom.drink()print(tom)# 再创建一个猫对象
lazy_cat = Cat()lazy_cat.name = "大懒猫"lazy_cat.eat()
lazy_cat.drink()print(lazy_cat)

在外界设置属性的问题

class Cat:def eat(self):# 哪一个对象调用的方法,self就是哪一个对象的引用print("%s 爱吃鱼" % self.name)def drink(self):print("%s 要喝水" % self.name)# 创建猫对象
tom = Cat()# 可以使用 .属性名 利用赋值语句就可以了
# tom.name = "Tom"tom.eat()
tom.drink()
tom.name = "Tom"

初始化方法

class Cat:def __init__(self):print("这是一个初始化方法")# self.属性名 = 属性的初始值self.name = "Tom"def eat(self):print("%s 爱吃鱼" % self.name)# 使用类名()创建对象的时候,会自动调用初始化方法 __init__
tom = Cat()print(tom.name)

利用参数设置属性初始值


class Cat:def __init__(self, new_name):print("这是一个初始化方法")# self.属性名 = 属性的初始值# self.name = "Tom"self.name = new_namedef eat(self):print("%s 爱吃鱼" % self.name)# 使用类名()创建对象的时候,会自动调用初始化方法 __init__
tom = Cat("Tom")print(tom.name)lazy_cat = Cat("大懒猫")
lazy_cat.eat()

_del_方法

class Cat:def __init__(self, new_name):self.name = new_nameprint("%s 来了" % self.name)def __del__(self):print("%s 我去了" % self.name)# tom 是一个全局变量
tom = Cat("Tom")
print(tom.name)# del 关键字可以删除一个对象
del tomprint("-" * 50)

_str_方法

class Cat:def __init__(self, new_name):self.name = new_nameprint("%s 来了" % self.name)def __del__(self):print("%s 我去了" % self.name)def __str__(self):# 必须返回一个字符串return "我是小猫[%s]" % self.name# tom 是一个全局变量
tom = Cat("Tom")
print(tom)

小明爱跑步

class Person:def __init__(self, name, weight):# self.属性 = 形参self.name = nameself.weight = weightdef __str__(self):return "我的名字叫 %s 体重是 %.2f 公斤" % (self.name, self.weight)def run(self):print("%s 爱跑步,跑步锻炼身体" % self.name)self.weight -= 0.5def eat(self):print("%s 是吃货,吃完这顿再减肥" % self.name)self.weight += 1xiaoming = Person("小明", 75.0)xiaoming.run()
xiaoming.eat()print(xiaoming)
class Person:def __init__(self, name, weight):# self.属性 = 形参self.name = nameself.weight = weightdef __str__(self):return "我的名字叫 %s 体重是 %.2f 公斤" % (self.name, self.weight)def run(self):print("%s 爱跑步,跑步锻炼身体" % self.name)self.weight -= 0.5def eat(self):print("%s 是吃货,吃完这顿再减肥" % self.name)self.weight += 1xiaoming = Person("小明", 75.0)xiaoming.run()
xiaoming.eat()print(xiaoming)# 小美爱跑步
xiaomei = Person("小美", 45)xiaomei.eat()
xiaomei.run()print(xiaomei)
print(xiaoming)

摆放家具


class HouseItem:def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return "[%s] 占地 %.2f" % (self.name, self.area)# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)print(bed)
print(chest)
print(table)

class HouseItem:def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return "[%s] 占地 %.2f" % (self.name, self.area)class House:def __init__(self, house_type, area):self.house_type = house_typeself.area = area# 剩余面积self.free_area = area# 家具名称列表self.item_list = []def __str__(self):# Python 能够自动的将一对括号内部的代码连接在一起return ("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s"% (self.house_type, self.area,self.free_area, self.item_list))def add_item(self, item):print("要添加 %s" % item)# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)print(bed)
print(chest)
print(table)# 2. 创建房子对象
my_home = House("两室一厅", 60)my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)print(my_home)
class HouseItem:def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return "[%s] 占地 %.2f" % (self.name, self.area)class House:def __init__(self, house_type, area):self.house_type = house_typeself.area = area# 剩余面积self.free_area = area# 家具名称列表self.item_list = []def __str__(self):# Python 能够自动的将一对括号内部的代码连接在一起return ("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s"% (self.house_type, self.area,self.free_area, self.item_list))def add_item(self, item):print("要添加 %s" % item)# 1. 判断家具的面积if item.area > self.free_area:print("%s 的面积太大了,无法添加" % item.name)return# 2. 将家具的名称添加到列表中self.item_list.append(item.name)# 3. 计算剩余面积self.free_area -= item.area# 1. 创建家具
bed = HouseItem("席梦思", 40)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 20)print(bed)
print(chest)
print(table)# 2. 创建房子对象
my_home = House("两室一厅", 60)my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)print(my_home)

士兵突击

class Gun:def __init__(self, model):# 1. 枪的型号self.model = model# 2. 子弹的数量self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 1. 判断子弹数量if self.bullet_count <= 0:print("[%s] 没有子弹了..." % self.model)return# 2. 发射子弹,-1self.bullet_count -= 1# 3. 提示发射信息print("[%s] 突突突... [%d]" % (self.model, self.bullet_count))# 1. 创建枪对象
ak47 = Gun("AK47")ak47.add_bullet(50)
ak47.shoot()

私有属性和方法


class Women:def __init__(self, name):self.name = nameself.__age = 18def __secret(self):# 在对象的方法内部,是可以访问对象的私有属性的print("%s 的年龄是 %d" % (self.name, self.__age))xiaofang = Women("小芳")# 私有属性,在外界不能够被直接访问
# print(xiaofang.__age)
# 私有方法,同样不允许在外界直接访问
# xiaofang.__secret()
class Gun:def __init__(self, model):# 1. 枪的型号self.model = model# 2. 子弹的数量self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 1. 判断子弹数量if self.bullet_count <= 0:print("[%s] 没有子弹了..." % self.model)return# 2. 发射子弹,-1self.bullet_count -= 1# 3. 提示发射信息print("[%s] 突突突... [%d]" % (self.model, self.bullet_count))class Soldier:def __init__(self, name):# 1. 姓名self.name = name# 2. 枪 - 新兵没有枪self.gun = None# 1. 创建枪对象
ak47 = Gun("AK47")ak47.add_bullet(50)
ak47.shoot()# 2. 创建许三多
xusanduo = Soldier("许三多")xusanduo.gun = ak47print(xusanduo.gun)
class Gun:def __init__(self, model):# 1. 枪的型号self.model = model# 2. 子弹的数量self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 1. 判断子弹数量if self.bullet_count <= 0:print("[%s] 没有子弹了..." % self.model)return# 2. 发射子弹,-1self.bullet_count -= 1# 3. 提示发射信息print("[%s] 突突突... [%d]" % (self.model, self.bullet_count))class Soldier:def __init__(self, name):# 1. 姓名self.name = name# 2. 枪 - 新兵没有枪self.gun = Nonedef fire(self):# 1. 判断士兵是否有枪# if self.gun == None:if self.gun is None:print("[%s] 还没有枪..." % self.name)return# 2. 高喊口号print("冲啊...[%s]" % self.name)# 3. 让枪装填子弹self.gun.add_bullet(50)# 4. 让枪发射子弹self.gun.shoot()# 1. 创建枪对象
ak47 = Gun("AK47")# 2. 创建许三多
xusanduo = Soldier("许三多")xusanduo.gun = ak47
xusanduo.fire()print(xusanduo.gun)

伪私有属性和方法

class Women:def __init__(self, name):self.name = nameself.__age = 18def __secret(self):# 在对象的方法内部,是可以访问对象的私有属性的print("%s 的年龄是 %d" % (self.name, self.__age))xiaofang = Women("小芳")# 伪私有属性,在外界不能够被直接访问
print(xiaofang._Women__age)
# 伪私有方法,同样不允许在外界直接访问
xiaofang._Women__secret()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAT实验

一&#xff1a;实验要求 二&#xff1a;实验分析 拓扑图 三&#xff1a;实验配置 1&#xff1a;路由器配置 R1配置IP R2配置IP 2&#xff1a;缺省路由 查看路由表 3&#xff1a;端口映射 4&#xff1a;pc、HTTP配置 5:DNS、client配置 四&#xff1a;实验结果 pc可以ping…

三菱plc学习入门(创建属于自己的FB模块)

在现实生活中&#xff0c;往往会需要修改一些属于方便自己的库&#xff0c;1&#xff0c;自己创建的库方便自己使用与查看2&#xff0c;提高自己编程能力&#xff0c;3&#xff0c;保护自己的程序不被外人修改&#xff01;&#xff01;&#xff01;下面就让我来操作一下 导入需…

基于springboot+vue的在线视频教育平台系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

ubuntu系统 vscode 配置c/c++调试环境

文章目录 1.安装插件2.目录结构3.cmake tools配置 1.安装插件 c/c插件 cmake cmake tools插件 2.目录结构 . ├── build ├── CMakeLists.txt ├── demo │ └── main.cpp ├── image.png ├── src │ ├── add.cpp │ └── add.hpp └── vsdebug.…

三角形任意一外角大于不相邻的任意一内角

一.代数证明 ∵ 对与△ A C B 中 ∠ c 外接三角形是 ∠ B C D ∵对与△ACB中∠c外接三角形是∠BCD ∵对与△ACB中∠c外接三角形是∠BCD ∴ ∠ B C D π − ∠ C ∴∠BCD\pi-∠C ∴∠BCDπ−∠C ∵ ∠ A ∠ B ∠ C π ∵∠A∠B∠C\pi ∵∠A∠B∠Cπ ∴ ∠ B C D ∠ A ∠…

开抖音小店需要什么要求?这些硬性条件缺一不可,建议收藏

大家好&#xff0c;我是电商花花。 现在越来越多的人开始将抖音作为创业和商业机会的平台&#xff0c;不少人都开始在抖音上做抖音小店&#xff0c;然后卖货&#xff0c;有货源的买自己的产品&#xff0c;没有货源的做无货源产品&#xff0c;赚取商品的差价。 我们做店也有三…

IO网络4.0

思维导图 tftp上传 #include <myhead.h>#define ERR_LOG(msg) do{\perror(msg);\printf("%d %s %s\n", __LINE__, __func__, __FILE__);\ }while(0)#define PORT 69 #define N 516int do_upload(int sfd, struct sockaddr_in sin);int main(int a…

.NET架构师:全网最全“权限系统”设计剖析

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

解决Python安装库时出现的Requirement already satisfied问题

uirement already satisfied的问题当我们用pip install 库名时&#xff0c;出现了下面 Requirement already satisfied WARNING: Ignoring invalid distribution -ip 的问题 对于这样的问题&#xff0c;解决办法就是在 pip install 后加 - -target你所要添加的库文件地址(注意…

Python爬虫 - 网易云音乐下载

爬取网易云音乐实战&#xff0c;仅供学习&#xff0c;不可商用&#xff0c;出现问题&#xff0c;概不负责&#xff01; 分为爬取网易云歌单和排行榜单两部分。 因为网页中&#xff0c;只能显示出歌单的前20首歌曲&#xff0c;所以仅支持下载前20首歌曲&#xff08;非VIP音乐&…

SpringCloud GateWay 在全局过滤器中注入OpenFeign网关后无法启动

目录 一、问题 二、原因 1、修改配置 2、添加Lazy注解在client上面 3、启动成功 一、问题 当在gateway的全局过滤器GlobalFilter中注入OpenFeign接口的时候会一直卡在路由中&#xff0c;但是不会进一步&#xff0c;导致启动未成功也未报错失败 2024-01-18 22:06:59.299 I…

开发板通过 Ubuntu/Linux 连接外网

文章目录 开发板通过 Ubuntu/Linux 连接外网概述配置 Ubuntu 系统配置开发板 开发板通过 Ubuntu/Linux 连接外网 概述 如果开发板需要访问外网&#xff0c;可以通过网线将开发板与 Ubuntu 系统连接起来&#xff0c;在 Ubuntu 系统中配置 ip_forward 让 Ubuntu 成为路由器&…

数字创意市场:Web3时代创作者的新机遇

随着Web3时代的崭露头角&#xff0c;数字创意市场正迎来全新的变革和机遇。在这个数字化的时代&#xff0c;创作者们将面对更加开放、去中心化的创作和交易环境。本文将深入探讨Web3时代数字创意市场为创作者带来的新机遇&#xff0c;以及这个时代为创意产业带来的变革。 创作者…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-4 label

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>label</title> </head><body> 性别: <label for"male">男</label> <input type"radio" name"sex&quo…

滚动菜单ListView

activity_main.xml <include layout"layout/title"/> 引用上章自定义标题栏 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app&qu…

配置云服务器

需求 我打算配置一个小型云服务器&#xff0c;玩玩。学习怎么部署网站等等。 1、购买云服务器 第一次玩&#xff0c;我购买的华为云提供的云服务器 66元 安装ubuntu 22 2、配置环境 jdk 解压jdk命令 tar -xzf jdk-8u171-linux-x64.tar.gz 修改配置文件 vim /etc/profil…

如何安装“虚拟机(VMware)”win10系统?

1、 下载 vmware官网下载&#xff1a;vmware官网跳转 2、 安装

HarmonyOS NEXT鸿蒙星河版发布

1月18日,在深圳举行的“鸿蒙生态千帆启航仪式”上,华为常务董事、终端BG CEO余承东宣布HarmonyOS NEXT鸿蒙星河版面向开发者开放申请。鸿蒙星河版将实现原生精致、原生易用、原生流畅、原生安全、原生智能、原生互联6大极致原生体验。 并且,华为在 1 月 15 日开启了HarmonyO…

SpringBoot SaToken Filter如用使用ControllerAdvice统一异常拦截

其实所有的Filter都是一样的原理 大致流程: 创建一个自定义Filter, 用于拦截所有异常此Filter正常进行后续Filter调用当调用后续Filter时, 如果发生异常, 则委托给HandlerExceptionResolver进行后续处理即可 以sa-token的SaServletFilter为例 首先注册SaToken的过滤器 pac…

安卓apk加固后重签名

背景 等保检测&#xff0c;安卓apk使用第三方加固后签名信息会丢失&#xff0c;需要我们重新进行签名 使用jarsigner签名遇到的问题 APP失效无法安装 如何解决签名失效 我们在这里使用Android SDK的apksigner进行签名 mac系统&#xff0c;apksigner 需要设置环境变量 1、…