一、整理笔记面向对象编程:类(class)、函数(方法mthod)
面向对象的三大特性:封装、继承、多态
1.
'''
模块module
每一个py结尾的原文件都是一个模块
模块的好处:方便代码的维护;方便代码的复用;使用模块还可以避免命名冲突
包package(文件夹)
在模块名前添加包名,可以避免模块命名冲突
每一个目录下都有一个__init__.py的模块
如果没有,则python吧该目录当做普通目录处理
'''
# ----------import sys
import sys
def test():
#调用系统模块获取命令行参数
args = sys.argv
print(args)
# test()
#调用 程序入口 测试代码 尽量不要直接test()
if __name__ == "__main__":
test()
2.
#---------导入自定义模块
# import demo01 #导入模块的所有内容
# demo01.test()
from demo01 import test#导入模块中指定的内容
test()
3.
'''面向对象编程 OOP Object Oriented Programing '''
'''
面向对象的特点一:封装
'''
# 对象 = 数据 + 函数(方法 处理数据的 )
#创建一个学生类
# -----------1.class通过class关键字创建类,类名首字母大写
class Student:
#------------2方法method
#__init__方法也称为构造方法-Constructor 初始化方法
#类中每一个方法的第一个参数都必须是self,并且该参数由系统自动传参
def __init__(self):
# pass
print('this is Constructor')
#创建对象
#调用类的构造方法创建一个类的实例-instance
tom = Student()
#添加数据
tom.name = 'Tom Cruse'
tom.age = 22
tom.gender = 'male'
print(tom.name,tom.age)
mike = Student()
mike.name = 'Michel Jordan'
mike.score = 99
class Dog:
def __init__(self,name,age,color,weight):
#定义类的属性(数据)
#self:代词,指当前对象
#self作用:指当前对象;成员变量
self.__name = name
self.__age = age
self.__color = color
self.__weight = weight
'''
变量的作用域:作用的范围
name是局域变量,它的作用范围仅限于定义的函数或方法内部
self.name是成员变量,它的作用范围是定义它的class内部
'''
#__私有变量 eg: self.__name = name
#私有变量只允许子类的内部访问不能从类外部进行访问
#-----------3封装
'''
封装:
把数据和处理数据的逻辑封装起来,
调用方便,并且不需要知道内部的实现细节
'''
def show(self):
print(self.__name,self.__age,self.__color,self.__weight)
#setter修改 私有属性
def set_name(self,name):
self.__name = name
def set_age(self,age):
if age>0 and age<=15:
self.__age = age
else:
#抛出异常
raise NameError('错误的年龄')
def set_weight(self,weight):
if weight>0 and weight<=100:
self.__weight = weight
else:
raise NameError('错误的体重')
#getter获取私有属性
def get_name(self):
return self.__name
wangcai = Dog('wangcai',4,'yellowhite',34)
laifu = Dog('laifu',3,'black',44)
# print(laifu.name)
wangcai.show()
wangcai.set_name('wanwang')
print(wangcai.get_name())
# wangcai.set_age(-2)
4.
'''
继承
好处:子类可以获得父类的全部功能(包含属性和方法)
继承的同时,子类可以有自己的方法,
并且子类可以对继承自父类的方法进行 重写
object是所有其它类的父类
如果一个类的父类是object可以省略
'''
class Animal(object):
#如果没有显式的提供构造方法,程序会提供一个默认的构造方法
def run(self):
print('Animal is running.....')
#继承:
#Dog(子类)继承了Animal(父类),
class Dog(Animal):
def bark(self):
print('wwwwwwwang.....')
#重写 覆盖父类的方法
def run(self):
print('dog is running....'
# a = Animal()
# a.run()
#isinstance()判断某个对象是否是某个类的一个实例
print(isinstance(dog,Dog))
5.
'''
多态:同一个对象表现出不同的状态,称之为多态(同样一个对象在不同的场合有不同状态
可以简化方法的调用
'''
from demo04 import *
#自定义数据类型:类
def run_twice(animal):
animal.run()
run_twice(dog)
|