标签:封装 分析 code str 细节 步骤 基础 upload ges
面向过程主要考虑的是怎么做
把完成摸个需求的 所有步骤 从头到尾 逐步实现
根据开发需求,将某些功能独立的代码封装成一个又一个的函数
最后完成的代码就是顺序的调用不同的函数.
特点是:
注重不准走与过程,不注重职责分工.
如果需求复杂,代码会变的很复杂
侧重点是谁来做?
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法.
在完成某偶一个需求前首先确定职责--要做的事情(方法)
根据职责确定不同的对象,在对象内部封装不同的方法(多个)
最后完成的代码就是顺序的让不同对象调用不同的方法.
特点是:
注重对象和职责,不同的对象承担不同的职责
更加适合对应复杂的需求变化,最专门应对复杂项目开发,提供固定套路
需要面向过程的基础上,再学习一些面向对象的语法.
例子:
类和对象是面向对象编程的两个核心概念
类是对一群具有相同特征或者行为的实物的一个统称,是抽象的,不能直接使用
特征被称为 属性
行为被称为 方法
对象 是由类创建出来的一个具体存在,可以直接使用
由哪一个类创建出来的对象 就拥有在哪一个类中定义的 属性和方法
类相当于图纸,对象就是用图纸创造出来的东西
在程序开发中先有类,再有对象.
类和对象的关系:
类是模板,对象是根据类这个模板创建出来的.
类只有一个,而对象可以有很多个.
不同的对象之间属性可能会各不相同.
在使用面向对象开发前应该啥偶先分析需求,确定一下,程序中需要包含哪些类!
在程序开发中药设计一个类,通常需要满足以下三个要素.:
名词提炼法:分析整个业务流程,出现的 名词,通常就是要找到的类.
dir(print)
__doc__
方法 这是定义类时候的说明.__方法名__
格式的方法是python提供的内置方法/属性,:__new__
创建对象时候会被自动调用__init__
对象被初始化时会自动调用__del__
对象被从内存中销毁前会自动调用__str__
返回对象的描述信息,print函数输出使用.class 类名:
def 方法1(self, 参数列表):
pass
def 方法2(self, 参数列表):
pass
self
对象变量 = 类名()
class Cat():
def eat(self):
print('吃鱼吃鱼')
def drink(self):
print('喝水喝水')
#开始调用
tom = Cat()
tom.eat()
tom.drink()
在面向对象开发中,引用概念是同样适用的!
解释器先执行等号右边的内容 在内存中创建了一个对象
然后在让tom这个变量引用这个对象的内存地址.
在计算机中通常使用十六进制表示内存地址
%d 可以以10进制输出数字
%x 可以以16进制输出数字
应用id函数
addr = id(tom)
print("%d" % addr) # %x可以看到16进制.
lazy_cat = Cat()
lazy_cat.eat()
lazy_cat.drink()
这两个猫对象 不是同一个对象,查看其内存地址就可以知道了.
但是如果我们用另外一个变量去接收lazy_cat 例如
mao1 = lazy_cat
.
设置一个属性即可huamao.name = '花猫'
# 调用
huamao.name
class Cat:
def eat(self):
print("%s 爱吃鱼" % self.name)
# 测试
mao1 = Cat()
mao1.name = '汤姆'
mao1.eat()
self.
访问对象的属性,也可以通过self.
调用其他对象的方法.__init__
方法,__init__
方法是对象的内置方法.
__init__
方法是专门用来定义一个雷具有哪些属性的放方法
在cat中增加__init__
方法,验证该方法在创建对象时会被自动调用
class Cat:
'''这是一个猫类'''
def __init__(self):
print("初始化方法")
__init__
方法内部使用 `self.属性名 = 属性值 就可以定义属性.# 重构Cat类
class Cat:
def __init__(self):
print('这是一个初始化方法')
self.name = 'Tom'
def eat(self):
print("%s爱吃鱼" % self.name)
# 调用
tom = Cat()
tom.eat()
print(tom.name)
__init__
进行改造__init__
方法的参数self.属性 = 形参
接受外部传递的参数类名(属性1,属性2)
调用class Cat:
def __init__(self, name):
print("初始化方法 %s"% name)
self.name = name
# 调用
tom = Cat('Tom')
__del__
和__str__
方法__init__
方法但是当一个对象被从内存中销毁前会自动调用__del__
方法.*生命周期
类名()
创建,生命周期开始.__del__
方法一旦被调用,生命周期结束__str__
这个内置方法付了.__str__
方法必须返回一个字符串class Cat:
def __init__(self, new_name):
self.name = new_name
print(self.name +'你好')
def __del__(self):
print(self.name+'走了')
def __str__(self):
return '这是__str__'
目标: 封装 小明爱跑步 存放家具
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
def secret(self):
print("%s 的年龄是 %d "%(self.name, self.__age))
# 测试
xiaofang = Women("小芳")
print(xiaofang.__age) # 这个就调用不了了.私有属性 在外界不能被直接访问.
xiaofang.secret() # 但是在对象的方法内部可以访问.
方法同理 不希望外界调用的方法前面加`__`,外部就调用不了了,只可以在类的内部调用.
在日常开发中不要使用这种方式,访问队形的私有属性或私有方法.
__
实际只是python做了一些特殊处理_类名__名称
print(xiaofang._Women__age)
标签:封装 分析 code str 细节 步骤 基础 upload ges
原文地址:https://www.cnblogs.com/srnl/p/11746187.html