在高级语言中有面向过程和面向对象
面向过程—>侧重于怎么做?
面向对象—>测中于谁来做?
面向对象创建的叫类,类有属性,有方法
类:属性(这一类事务的共同信息) 和 方法(你能完成的动作)
1.类名:这类事物的名字(大驼峰命名法)
大驼峰命名法:
1.每个单词的首字母大写
2.单词与单词之间没有下划线
2.属性:这个类创建出来的对象有什么特征
3.方法:这个类创建出来的对象有什么行为
class Cat: ##定义类
def eat(self): ##可以有的方法
print('%s 爱吃鱼' %(self.name))
def drink(self):
print('猫要喝水')
hellokitty = Cat() ##将hellokitty定义为Cat()类
hellokitty.name = 'apple'
hellokitty.eat() ##hellokitty的动作
hellokitty.drink()
tom = Cat()
tom.name = 'Tom'
print(tom.eat())
print(tom.drink())
后面这些都是人为进行操作,如何一开始就进行定义,使用__init__内置函数
def __init__(self,new_name):
self.name = new_name
同时也可以进行自定义打印。
str:在python中,使用print输出对象变量的时候
默认情况下这个变量引用的对象是由哪一个类创建的对象及其在内存中的地址
如果在开发中 希望使用print输出变量的时候,能够打印自定义内容
面向对象有三大特征
封装,继承,多态
封装 (只对外留一个接口进行调用)
1.封装是面向对象编程的一大特点
2.面向对象编程的第一步 将属性和方法封装到一个抽象(因为类不能直接使用)的类中
3.外界使用类创建对象,然后让对象调用方法
4.对象方法的细节都被封装在类的内部
需求:
1.小明和小美都爱跑步
2.每次跑步都会减肥0.5公斤
3.每次吃东西体重都会增加1公斤
“”"
class Person:
def __init__(self,name,weight):
self.name = name
self.weight = weight
def __str__(self):
return '我的名字叫 %s 体重是 %.2f' %(self.name,self.weight)
def run(self):
print('%s 去跑步~~~' %(self.name))
self.weight -= 0.5
def eat(self):
print('%s 吃东西~~~' %(self.name))
self.weight += 1
a = Person('小明',89)
a.run()
a.eat()
print(a)
b = Person('lily',50)
b.eat()
b.run()
print(b)
继承:实现代码的重用 相同的代码不需要重复的写
class Animal:
def eat(self):
print('吃...')
def drink(self):
print('喝...')
def run(self):
print('跑...')
def sleep(self):
print('睡...')
class Dog(Animal):
def bark(self):
print('汪汪~')
多态(以封装和继承为前提)
不同的子类对象调用相同的方法 产生不同的结果