面向对象-01
Posted jbzd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象-01相关的知识,希望对你有一定的参考价值。
一:创建类和对象
class f:
def bar(self):
print(‘bar‘)
def hello(self, name)
print(‘hello %s‘%name)
fobj = f()
fobj.bar() > ‘bar‘
fobj.hello(‘tom‘) >‘hello tom‘
ps:类中的第一个参数必须是self,类中定义的函数叫方法
二:面向对象三大特性--封装
#三大特性:封装、继承、多态
1.封装:
#将内容封装到某处
#从某处调用被封装的内容
例1:将内容封装到某处
解析:self是一个形式参数,当执行 fobj = F(‘tom‘,18)时,self等于fobj
例2:从某处调用封装的内容
调用封装的内容时,有两种情况:
#通过对象直接调用
#通过间接self调用
fobj = F(‘tom‘,18)
fobj.name >>> tom 调用fobj对象的name属性
fobj.age >>> 18 调用fobj对象的age属性
class F:
def __init__(self,name,age)
self.name = name
self.age = age
def hello(self):
print(self.name)
print(self.age)
fobj = F(‘tom‘,18)
fobj.hello()
>>> tom
>>> 18
要求如下:
1.打印汽车有4个轮子
2.打印汽车是红色的
3.打印汽车牌子是奔驰
1.打印汽车有8个轮子
2.打印汽车是白色的
3.打印汽车牌子是宝马
#函数式编程:
def carr(num):
print(‘汽车有%s个轮子‘%num)
def color(col):
print(‘汽车是%s色‘ %col)
def brand(bran):
print(‘汽车牌子是%‘%bran)
调用:
carr(4)
color(‘红色‘)
brand(‘奔驰‘)
carr(8)
color(‘白色‘)
brand(‘宝马‘)
#面向对象编程
class F:
def __init__(self, carr, color, bran):
self.carr = carr
self.color = color
self.bran = bran
def carr(self):
print(‘汽车有%s个轮子‘%self.carr)
def color(col):1
print(‘汽车是%s色‘ %self.color)
def brand(bran):
print(‘汽车牌子是%‘%self.bran)
fobj1 = F(4,‘红色‘,‘奔驰‘)
fobj1.carr()
fobj1.color()
fobj1.brand()
fobj2 = F(8,‘白色‘,‘宝马‘)
fobj1.carr()
fobj1.color()
fobj1.brand()
三.1:面向对象的三大特性--继承
#继承:面向对象中的继承和现实世界的继承相同,即:子可以继承父的内容
例子:
#猫
class cat:
def voice(self):
print(‘喵~~~~‘)
def eat(self):
print(‘吃‘)
def drink(self):
print(‘喝‘)
def pull(self):
print(‘拉‘)
#狗
class dog:
def voice(self):
print(‘汪~~~~‘)
def eat(self):
print(‘吃‘)
def drink(self):
print(‘喝‘)
def pull(self):
print(‘拉‘)
由此看出,猫和狗都具备了相同的 吃、喝、拉的功能,只有叫声不同,那么可以利用继承的思想,将这些相同的功能进行提炼出来:
#动物
class Animals:
def eat(self):
print(‘吃‘)
def drink(self):
print(‘喝‘)
def pull(self):
print(‘拉‘)
#猫
class cat(Animals):
def voice(self):
print(‘喵~~~~~‘)
class dog(Animals):
def voice(self):
print(‘汪~~~~‘)
cat = cat()
cat.eat() >>> 吃
cat.drink() >>> 喝
cat.pull() >>> 拉
由此可见,父类将相同的方法进行整合,子类仅需继承父类就可以获得这些方法而不必一一去实现每个方法
三.2: 多继承:
#继Python可以继承多个类
#Python的类如果继承了多个类,那么寻找方法的方式有两种:深度优先和广度优先
#当类是经典类时,多继承,优先按照深度优先方式查找
#当类是新式类时,多继承,优先按照广度优先方式查找
以上是关于面向对象-01的主要内容,如果未能解决你的问题,请参考以下文章