day22:面向对象封装对象操作&类操作&面向对象删除操作
面向对象程序开发
1.类的三种定义方式
class MyClass:
pass class MyClass(): #(推荐)
pass class MyClass(object): # object类是所有类的父类
pass
2.类的实例化
class MyCar():
color = "黄色的" # 实例化对象 (类的实例化)
obj = MyCar()
3.类的基本结构
类的基本结构包括成员属性和成员方法
"""
1.成员属性
2.成员方法
"""
class MyCar():
# 成员属性
color = "天蓝色的"
# 成员方法
def didi():
print("小车会滴滴叫")
4.注意:在类中不能写逻辑语句或循环语句
这种写法可以直接在python当中执行,但是严禁使用如果想要表达逻辑或者循环,
需要写在成员方法当中,不能直接裸露的写在类当中,会破坏类中结构.
class MyCar():
if 5 == 5:
print("打印成功123456")
5.类的命名
驼峰命名法 : 推荐起类名的时候,使用大驼峰命名法.
mycar -> MyCar mymouse => MyMouse
面向对象封装:对象的相关操作
关于封装的相关概念
封装等级:
(1) 私有 : 在类的内部可以访问,在类外不可以访问
(2) 公有 : 在类的内部可以访问,在类外也可以访问
封装成员:
(1) 成员属性
(2) 成员方法
调用成员:
(1) 对象.成员属性
(2) 对象.成员方法
绑定方法:
(1) 绑定到对象 : 对象调用方法时,系统自己默认传递该对象,作为一个参数传递到当前方法中
(2) 绑定到类 : 对象或者类调用方法时,系统自己默认传递该类,作为一个参数传递到当前方法中
定义一个MyCar类,并定义公有/私有成员属性和公有/私有成员方法
class MyCar():
# 公有成员属性
color = "屎黄色"
logo = "中国吉利汽车"
# 私有成员属性
__price = "2000万" # 公有成员方法
def run(self):
print("小车会跑,百公里0.01秒,颜色{}".format(self.color)) # self <=> obj
# 私有成员方法
def __info(self):
print("车主信息是保密的,传说是京城有名的富二代") # 实例化对象(类的实例化)
obj = MyCar()
实例化的对象访问公有成员属性和方法
# 访问属性
print(obj.color)
# obj.__price error # 私有成员属性不能够在类外调用 # 访问方法
obj.run()
# obj.__info() error # 私有成员方法不能够在类外调用
实例化的对象动态添加公有成员属性和方法
1.在类外动态添加成员属性-->通过obj对象
# 可以在类外通过对象.属性为对象添加属性
obj.logo = "五菱宏光"
print(obj.logo)
如果想确认obj对象中是否有你新添加的logo属性,可以使用对象.__dict__获取类对象中的成员
2.在类外动态添加成员方法-->通过obj对象
在类外动态添加成员方法,可分为无参方法和有参方法
# 1.无参方法
def dahuangfeng():
print("变形! 我是大黄蜂~") obj.dahuangfeng = dahuangfeng
obj.dahuangfeng() # 2.有参方法
# 2.1 基础版
def qingtianzhu(name):
print("请我叫我一柱擎天,简称{}".format(name)) obj.qingtianzhu = qingtianzhu
obj.qingtianzhu("擎天柱") # 2.2 升级版
def qingtianzhu(obj,name):
print("请我叫我一柱擎天,简称{},颜色是{}".format(name,obj.color))
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu(obj,"擎天柱") # 2.3 究极版 (即使调用类外动态创建的方法,也让系统自己传递obj对象本身)
'''在类外调用自定义方法时,系统不会自动传递obj对象参数'''
import types
def qingtianzhu(obj,name):
print("请我叫我一柱擎天,简称{},颜色是{}".format(name,obj.color))
# MethodType(方法,对象) 把哪个方法和哪个对象绑定到一起,形成绑定方法
obj.qingtianzhu = types.MethodType(qingtianzhu,obj)
obj.qingtianzhu("擎天柱")
3.也可以使用lambda表达式实现在类外添加方法
obj.weizhentian = lambda : print("我是威震天~ ")
obj.weizhentian()
面向对象封装:类的相关操作
day22:面向对象封装对象操作&类操作&面向对象删除操作的更多相关文章
- day17-Python运维开发基础(类的封装 / 对象和类的相关操作、构造方法)
1. 类的封装及相关操作 # ### oop 面向对象程序开发 """ #用几大特征表达一类事物称为一个类,类更像是一张图纸,表达的是一个抽象概念 "" ...
- .NET 基础 一步步 一幕幕[面向对象之对象和类]
对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...
- 洗礼灵魂,修炼python(31)--面向对象编程(1)—面向对象,对象,类的了解
面向对象 1.什么是面向对象 (图片来自网络) 哈哈,当然不是图中的意思. 1).面向对象(Object Oriented,OO)是软件开发方法.利用各大搜索引擎得到的解释都太官方,完全看不懂啥意思对 ...
- Objective-C面向对象-对象和类
文章都是先由本人个人博客:孙占兴:www.teilim.com,先更新,随后CSDN博客才会更新,掌握第一动态请关注本人主站. 原文链接:http://www.teilim.com/objective ...
- Util应用程序框架公共操作类(四):验证公共操作类
为了能够验证领域实体,需要一个验证公共操作类来提供支持.由于我将使用企业库(Enterprise Library)的验证组件来完成这项任务,所以本文也将演示对第三方框架的封装要点. .Net提供了一个 ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- Util应用程序框架公共操作类(五):异常公共操作类
任何系统都需要处理错误,本文介绍的异常公共操作类,用于对业务上的错误进行简单支持. 对于刚刚接触.Net的新手,碰到错误的时候,一般喜欢通过返回bool值的方式指示是否执行成功. public boo ...
- Java中Cookie常用操作类(Spring中操作Cookie)
说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...
- js moment.js日期操作类 datetime,日期操作,dayjs
http://momentjs.com/ JS时间处理插件MomentJS https://juejin.im/post/5a2bdc55f265da432b4abf5e Day.js 2kB超轻量时 ...
随机推荐
- 一文说通Blazor for Server-Side的项目结构
用C#代替Javascript来做Web应用,是有多爽? 今天聊聊 Blazor. Blazor 是一个 Web UI 框架.这个框架允许开发者使用 C# 来创建可运行于浏览器的具有完全交互 UI ...
- 管理用户和组 、 tar备份与恢复 、 cron计划任务-云计算学习(4)
配置用户和组账号 问题 本例要求创建下列用户.组以及组的成员关系: 新建用户 alex,其用户ID为3456,密码是flectrag 创建一个名为 adminuser 的组 创建一个名为 natash ...
- vscode F2无法使用
rope库可能存在bug 解决方法: "python.jediEnabled": false //自动补全用微软自带
- Mysql基础(三):MySQL基础数据类型、完整性约束、sql_mode模式
目录 2.MySQL基础数据类型.完整性约束.sql_mode模式 1. MySQL常用数据类型 2. 完整性约束 3. MySQL的sql_mode模式说明以及设置 2.MySQL基础数据类型.完整 ...
- ajax配合art-template模板引擎的使用
最近才接触js的模板引擎听说相比以前使用的js foreach加载后台返回的json数据简便很多而且效率方面也很不错.今天自己玩了一下 后台使用的是.net mvc,数据库脚本就不提供了,返回的Jso ...
- Cyber Security - Palo Alto Security Policies(1)
Security policies: Enforcing network traffic by configuring rules of what is allowed or denied to co ...
- Oracle数据泵详解
一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...
- PG-跨库操作-dblink
在PostgreSQL数据库之间进行跨库操作的方式 dblink postgres_fdw 本文先说说dblink:dblink是一个支持从数据库会话中连接到其他PostgreSQL数据库的插件.在其 ...
- IO、NIO实现简单聊天室,附带问题解析
本篇文章主要使用IO和NIO的形式来实现一个简单的聊天室,并且说明IO方法存在的问题,而NIO又是如何解决的. 大概的框架为,先提供思路和大概框架图--代码--问题及解决方式,这样会容易看一点 ...
- 软件测试必备技能,带你学习jmeter!
一:jmeter用户变量设置: 1.在线程组鼠标右击--添加--配置元件-用户定义的变量, 2.根据业务需求自定义变量的名称,添加需要的变量和对应的值 3.在脚本对应位置添加参数 二:文件参数化: 两 ...