1、面向对象编程(OOP)
面向过程:根据业务逻辑从上到下写代码
面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程
2、类与对象
类:模型
对象:实体
狗:类, 李四家的大黄狗:对象
奔驰汽车:类,张三的那量奔驰:对象
类(Class)由三部分构成:
类的名称:类名
类的属性:一组数据
类的方法:允许进行操作的方法(行为)
(1)定义一个类:
class 类名: #类名一般以大写字母开头
xxxxxxxx
给一个对象添加属性:
对象名.新的属性名 = 值
获取对象的属性的方法,有2种:
(1)对象.属性
(2)定义一个方法,这个方法中使用self.属性名
个人认为对象名.属性名
也可以
调用类里面的函数的方法对象名.函数名
不管需不需要给函数传参数,里面的self一定要写,而且出现在最前面。
如果在类里面定义的函数里面调用属性,需要用到self.属性
或者对象名.属性
要调用这个含有属性的函数selfinfo
,需要在定义属性后面再调用,否则会报错(python是一个动态的语言)
__init__(self,a,b):
创建完对象会自动调用的函数,也叫初始化方法
可以定义对象时对其传递参数,如fentiao =Cat(A,B)
则A和B分别好会传给a和b。
我们也可以在方法里面直接添加属性。
这样一来我们刚创建完对象,该对象就具有了一些属性,这样就可以随便调用了
__init__()
方法
1、是python自动调用的方法,调用时间为为:创建完对象之后,立马自动调用
2、这个方法一般用于完成一些默认事情,比如添加一些属性
3、
class Xxxxx:
def __init__(self,new_a,new_b):
self.a= new_a
self.b=new_b
注意:new_a,new_b是局部变量,并不是对象的属性,如果想在init方法中添加属性,需要使用类似于self.属性 = 值
str()方法
例子:考地瓜
例子:存放家具
#!/usr/bin/python
#coding:utf-8
class Home:
def __init__(self,area):
self.area = area
self.containsItem = []
def __str__(self):
msg = "当前可用面积为" + str(self.area)
msg += "\t"
msg += "家里的物品有:"
#msg += ",".join(self.containsItem)
if len(self.containsItem)> 0:
for item in self.containsItem:
msg += item.name + ","
msg = msg[:-1]
else:
msg += "None"
return msg
#添加一个新物品到家里面
def addItem(self,item):
if self.area > item.area:
self.area -= item.area
self.containsItem.append(item)
class Bed:
def __init__(self,name,area):
self.name = name
self.area = area
def __str__(self):
msg = "床的名字为:" + self.name + "\n" "床的面积为:" + str(self.area)
return msg
home = Home(124)
print(home)
bed = Bed("席梦思",4)
home.addItem(bed)
print(home)
print(bed)
bed2 = Bed("硬板床",3)
home.addItem(bed2)
print(home)
print(bed2)
优化代码
定义两个新方法,,将属性传递过去
存放家具及灯的状态