面向过程: 强调的是步骤、过程、每一步都是自己亲自去实现的。
这种解决问题的思路我们就叫做面向过程。
面向对象:当遇到某个需求的时候不用自己去实现,应该找一个专门做这个事的人来做。
这种解决问题的思路我们叫做面向对象。
三大特征: 继承、封装、多态
1.对象: 万物皆对象
a 看的见摸得着实实在在存在的 比如:埃菲尔铁塔
b 看不见,摸不着的, 但是存在 比如: 会议
2. 对象: 属性和方法
属性:静态不会改变的
方法:会动的, 动作
例:张三同学 属性:姓名,性别,年龄,身份证号,体重,联系方式,籍贯,名族,身高,住址, 班级,学号,爱好
方法:学习,娱乐,吃饭,睡觉,厕所,喝水
泰迪:属性:名字,性别,体重,毛色,住址,品种,年龄,身高
方法:娱乐,叫,吃,喝,吐舌头,厕所
笔记本:属性:品牌,型号,配置,出厂日期,重量,寿命,尺寸,价格,颜色
方法:代码,娱乐,办公,学习
3.类: 对象中公共的属性和方法,类是抽象的概念,仅仅是模板,如:人,模子,月饼
对象是一个你能看到的, 摸得着的具体实体 (根据模子造出,各种属饼)
4.类图: class Person(object):#大驼峰 #继承
#属性
name=None
sex=none
age=0
#方法
def show(self):
print('名字%s 性别%s 年龄%d'%(self.name,self.sex,self.age))
#创建实例对象
zsf=person()
zsf.name='张三'
#添加属性
zsf.hobby='唱歌'
zsf.age=100
zsf.sex=‘男’
zsf.show()
print(zsf.hobby)
5. 构造函数:完成初始化(给属性赋值)可以使用默认值def__init__(self,age=18)年龄的默认值为18
def __init__(self,n1,n2):
self.s1=n1
self.s2=n2
把之前的多行代码完成初始化,用1行代码代替
6.self:代表当前类
class Person(object):
def show(self):#self代表person
pass
7.封装:例如(电视机,电脑,冰箱)防止不合法数据输出;保护数据
1.私有属性(只有自己所用属性前加俩下划线,__+属性,私有后无法访问)
2.共有属性(所有人共同使用的)类和子类都可以用,任何人都能用,当前类可以用
赋值用set,获取值用get
3.protect受保护的 前加一个下划线(_+属性)
class Person(object): __name=None __sex=None __age=0 def setNmae(self,name): if ...... self.__name=name else: self.__name='aaa' def getNmae(self,name): return self.__name ss=Person() ss.setName('dd') print('名字:%s'%(ss.getName(),..))
8.1.继承:把相同的代码放到父类中,继承来源于生活,比如:孩子继承父母长相,孩子继承遗产
继承涉及到父类(超类super,基类base)和子类(派生类,扩展类)
2.啥时候用:子类与父类是is a 关系(企鹅是一只鸟:企鹅is a 鸟)
3.继承怎么用:创建父类
class +父类名(object):
公共属性
公共方法
创建子类
class +子类名(父类名):
自己特有的属性
自己特有的方法
4.在哪里用:a:is a关系
b:多个类中出现多个相同的属性和方法,把相同的属性和方法放到父类中,子类中留下 自己特有的
5.子类调用父类的属性和方法:super().属性或super()方法
9.多态:同一个动作有不同的人在做
class Pet(object): #定义一个父类 def zoo(self): #构造同一个方法 print('小张家喂养了狗和猫') class Dog(Pet): def zoo(self): print('狗在啃骨头') class Cat(Pet): def zoo(self): print('猫在吃鱼') class Poeple(object): def feed(self,Pet): print('小张在喂养宠物') Pet.zoo() #最后返回这个动作 xz=Poeple() cat=Cat() xz.feed(cat) dog=Dog() xz.feed(dog)
一.1.单继承:继承具有传递性(单继承)
多继承:可以继承父子类(class+类名(类1,类2))
2.@property私有公用,使得用法跟调用属性一样;@属性+setter赋值方法
3.对象可以有自己的属性:li=Student()
li.hobby='羽毛球'
print(li.hobby)
4.构造函数可以使用默认值:
class People(object):
def __init__(self,name,age=10)
self.name=name
self.age=age
zs=People('张三') #默认年龄为10
5.类中属性:公共的:name
私有的:__age 俩个下划线
受保护的:_money # 一个下划线
6.继承具有传递性:class A(object):
pass
class B(A):
pass
class C(B):
pass
c1=C() #对象c1可以调用父类中A的公共属性和方法
super().__init__(父类的属性)
注意:继承分为单继承和双继承,继承只能继承公共属性和方法
7.property:set,get方法的使用像属性一样简单