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超轻量时 ...
随机推荐
- 题解:2018级算法第三次上机 C3-Zexal的浩瀚星辰
题目描述: 样例: 实现解释: 一道结合了火箭发射的贪心题目 知识点: 贪心,优先队列 题目分析: 根据题目描述可知,延迟后时间是正常推进的,也就是假设共有n个火箭,推迟k小时.则在到达k+1小时时, ...
- python 将指定文件夹中的指定文件放入指定文件夹中
import os import shutil import re #获取指定文件中文件名 def get_filename(filetype): name =[] final_name_list = ...
- shell专题(四):Shell中的变量
4.1 系统变量 1. 常用系统变量 $HOME.$PWD.$SHELL.$USER等 2.案例实操 (1)查看系统变量的值 [atguigu@hadoop101 datas]$ echo $HOME ...
- 数据可视化之powerBI技巧(一)PowerBI可视化技巧:KPI指标动态展示之TOPN及其他
本文来自星友Beau的分享,在进行数据指标的展现时,对关键的少数单独展示,而对剩余的大多数折叠为其他项,是一个很常用的做法.Beau同学通过一个日常的办公场景,详细介绍了PowerBI实现的步骤,值 ...
- 临时解决GitHub的raw.githubusercontent.com无法连接问题
http://qjzd.net:3000/topic/5e48cc33dcf06d6a181ffb81 查询真实IP 通过IPAddress.com首页,输入raw.githubusercontent ...
- python 装饰器(一):装饰器基础(一)装饰器形式,何时执行
简介 装饰器是可调用的对象,其参数是另一个函数(被装饰的函数). 装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象. 形式 假如有个名为 decorate 的装饰器: ...
- redis(十):Redis 列表(List)
Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967 ...
- RCNN论文阅读笔记
一摘要: 两个主要工作:1将cnn和自上而下的区域提案结合进行定位和对象分割:2当训练数据稀缺时,先预训练然后微调. rccn工作分为四步:1输入一张图片 2用selective search算法对每 ...
- 你有认真了解过自己的“Java对象”吗? 渣男
对象在 JVM 中是怎么存储的 对象头里有什么? 文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱,有你想要的. 作为一名 Javaer,生活中的我们可能暂时没有对象,但 ...
- 为什么阿里、头条、美团这些互联网大厂都在用Spring Boot?
前言 自 2014 年发布至今,Spring Boot 的搜索指数 一路飙升.没错 Spring Boot 越来越火了,作为一名行走一线的 Java 程序员,你可能在各个方面感受到了 Spring B ...