面向对象程序开发

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:面向对象封装对象操作&类操作&面向对象删除操作的更多相关文章

  1. day17-Python运维开发基础(类的封装 / 对象和类的相关操作、构造方法)

    1. 类的封装及相关操作 # ### oop 面向对象程序开发 """ #用几大特征表达一类事物称为一个类,类更像是一张图纸,表达的是一个抽象概念 "" ...

  2. .NET 基础 一步步 一幕幕[面向对象之对象和类]

    对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...

  3. 洗礼灵魂,修炼python(31)--面向对象编程(1)—面向对象,对象,类的了解

    面向对象 1.什么是面向对象 (图片来自网络) 哈哈,当然不是图中的意思. 1).面向对象(Object Oriented,OO)是软件开发方法.利用各大搜索引擎得到的解释都太官方,完全看不懂啥意思对 ...

  4. Objective-C面向对象-对象和类

    文章都是先由本人个人博客:孙占兴:www.teilim.com,先更新,随后CSDN博客才会更新,掌握第一动态请关注本人主站. 原文链接:http://www.teilim.com/objective ...

  5. Util应用程序框架公共操作类(四):验证公共操作类

    为了能够验证领域实体,需要一个验证公共操作类来提供支持.由于我将使用企业库(Enterprise Library)的验证组件来完成这项任务,所以本文也将演示对第三方框架的封装要点. .Net提供了一个 ...

  6. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  7. Util应用程序框架公共操作类(五):异常公共操作类

    任何系统都需要处理错误,本文介绍的异常公共操作类,用于对业务上的错误进行简单支持. 对于刚刚接触.Net的新手,碰到错误的时候,一般喜欢通过返回bool值的方式指示是否执行成功. public boo ...

  8. Java中Cookie常用操作类(Spring中操作Cookie)

    说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...

  9. js moment.js日期操作类 datetime,日期操作,dayjs

    http://momentjs.com/ JS时间处理插件MomentJS https://juejin.im/post/5a2bdc55f265da432b4abf5e Day.js 2kB超轻量时 ...

随机推荐

  1. uni-app 使用个推推送系统消息

    原文可查看此处 ,搜索 uni-app 使用个推推送系统消息 https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg3NTA ...

  2. 解决alert在ios版微信中显示url的问题(重写alert)

    为了解决alert在ios版微信中显示url的问题 window.alert = function(name){ var iframe = document.createElement("I ...

  3. python 并发专题(六):协程相关函数以及实现(gevent)

    文档资源 http://sdiehl.github.io/gevent-tutorial/ 一.协程实现 线程和协程 既然我们上面也说了,协程也被称为微线程,下面对比一下协程和线程: 线程之间需要上下 ...

  4. tensorboard学习笔记

    TensorBoard 默认是不会记录每个节点的用时.耗费的内存大小等这些信息的,那么如何才能在图上显示这些信息呢?关键就是如下这些代码,主要就是在 sess.run() 中加入 options 和  ...

  5. 全栈的自我修养: 003Axios 的简单使用

    全栈的自我修养: Axios 的简单使用 You should never judge something you don't understand. 你不应该去评判你不了解的事物. 全栈的自我修养: ...

  6. [Antd-vue] Warning: You cannot set a form field before rendering a field associated with the value.

    在用ant-design-vue的框架中,使用到了这种场景,就是点击编辑按钮,弹出modal模态框,渲染modal模态框中的form表单页面,并给表单赋值,但是在给表单赋值的时候,总是会报错. 错误提 ...

  7. easyUI传递参数

    #======================JSP=====================================                <div class="l ...

  8. Python Ethical Hacking - VULNERABILITY SCANNER(4)

    Extracting & Submitting Forms Automatically Target website:http://10.0.0.45/dvwa/vulnerabilities ...

  9. CentOS 7.0 x86_64官方正式版系统(64位)

    下载地址 http://www.xitongzhijia.net/linux/201603/69219.html

  10. POJ2774 --后缀树解法

    POJ2774 Long Long Message --后缀树解法 原题链接 题意明确说明求两字符串的最长连续公共子串,可用字符串hash或者后缀数据结构来做 关于后缀树 后缀树的原理较为简单,但 \ ...