面向对象程序开发

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()

面向对象封装:类的相关操作

最新文章

  1. appium 环境搭建 java
  2. DroidDraw - Android的界面设计工具
  3. 通过SEP禁用USB
  4. python中的is、==和cmp()比较字符串
  5. Perl内置变量速查表
  6. HttpHandler与HttpModule及实现文件下载
  7. 重新开始学习javase_对象的初始化
  8. Java IO :文件
  9. Oracle中MERGE语句的使用
  10. 安卓一键分享到qq,微信,微博,官方SDK非第三方
  11. mybatis乱码
  12. 移动端判断ios还是android终端
  13. 学习笔记之机器学习(Machine Learning)
  14. JQ获取CKeditor的值
  15. Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) 【ABC】
  16. Mysql的select in会自动过滤重复的数据
  17. ASP.NET的MVC中Model对象字段的数…
  18. Java堆外内存之六:堆外内存溢出问题排查
  19. 撩课-Web大前端每天5道面试题-Day4
  20. JAVA验证身份证号码是否合法

热门文章

  1. Redis批量查询模板
  2. WPF手机号码归属批量查询并导出到Excel
  3. WPF DataGrid ScrollBar Style
  4. day76 作业
  5. Oracle数据库期末总结
  6. 1-The next outbreak we&#39;re not ready
  7. Scala 面向对象(十三):隐式转换和隐式参数
  8. java 面向对象(十九):关键字:static
  9. 数据可视化之分析篇(八)Power BI数据分析应用:结构百分比分析法
  10. The Modules of Event-driven