'''
面向对象编程的三大要素:
1.继承:子类继承父类
继承的方法就是在子类的类名后加上(父类名),继承后,子类可以将父类中已有的所有可被继承的,
的属性和方法,全部继承在子类之中。通过子类实现对这些方法和属性的调用
不可被继承的内容就是私有属性和私有方法
构造方法可以被继承
可以多继承,即继承多个父类。
如果多个父类之间有相同的方法或者属性存在的话(包括构造方法),根据继承的顺序,从左往右,优先决定用谁的。(先继承谁就用谁的)
2.封装
封装是一种概念。不是某种特定形态
为了降低代码的冗余,提升代码复用性的一种形式。
3.多态
程序的多种形态。
一个事物具备多种不同的形态。可以在类的属性和方法上进行多态的定义。
方法的重写:将父类之中已有的被子类所继承的方法,在子类中重新进行定义。不同的子类,同样的方法可以实现不同的效果。
方法的重载(Python不支持方法的重载):同一个方法,基于定义的参数数量不同,来实现不同的业务。
'''
from class05_object.class_demo import Dog #导入class_demo中的Dog类
#狗类
# class Dog:
# attr_01 = '毛发'
# attr_02 = '尖牙'
# __attr_03 = '私有属性' #__表示私有属性,无法被子类继承。
# def __init__(self,name):
# self.name = name
#
# def eat(self):
# print('饿了就吃饭')
#
# def __walk(self): #私有方法无法被继承
# print('私有方法')
#贵宾犬类
class Poodle(Dog):
attr_01 = '卷毛' #这就是一种多态
def eat(self):
print('只吃细粮')
#金毛类
class Golden(Dog):
def eat(self):
print('爱吃肉')
# 方法重载:python不支持,只做逻辑演示
def eat(self,name):
print('爱吃肉'+name)
def eat(self,num,name):
print('爱吃肉'+name)
print('一次可以吃'+num+'块肉')
d = Dog('dd')
d.eat()
p = Poodle('pp')
# print(p.attr_01)
# print(p.attr_02)
# print(p.__attr_03)
p.eat()
# p.__walk
g = Golden('gg')
g.eat()
#以下为方法的重载演示代码(python不支持方法重载,仅作演示)
g.eat('牛肉')
g.eat('3','牛肉')
'''
模块的使用:
模块就是包。python中很多官方提供的库供我们变成日常使用。还有很多第三方库供我们使用。
如果想要使用这些库,需要通过导包实现使用。针对第三方库,导包之前需要先安装才可以正常
使用。
下载:在cmd中通过指令pip install实现下载安装。所有第三方库的名称不是固定的。需要安装什么包就百度搜索以下安装指令。
下载第三方库默认是基于Python的官方源进行下载,所以下载速度比较慢。可以切换到国内源进行下载
推荐清华源:清华源:https://pypi.tuna.tsinghua.edu.cn/simple
完整下载指令: pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
导入:所有的包都是在导入后才可以使用
通过关键字from ... import .. 或者直接import ... 来实现导入
跨文件导入也是同样的方法。
导包一定注意导入的路径是否正确。
有时候会选择复制别人的代码或者工程到本地编译器中。这时候一定检查导包路径,如果报错,就把导包全部删除,自己再导入一次。
导包操作适用于第三方库的导入和跨文件内容调用。
'''