7.1 面向对象的基本内容
7.1.1 格式
对象和类的关系,对象是类的实例
具有相同方法和属性的一类事物称为类
一个拥有具体属性值和动作的具体个体
class Files: #类中的函数不再称为函数,称为方法
def write(self,name):
print(name)
return 666
def read(self,name):
print(name)
def append(self,name):
print(name)
obj = Files() #创建该类的对象
result = obj.write('alex') #通过对象调用方法
print(result)
类内部数据(包括嵌套的类)在解释器解释的时候就执行,方法内部 调用的时候才执行
class Foo(object):
print(123) #一运行就执行
def func(self):
pass
class Base(object):
print(456)
7.1.2 面向对象的特性
特性:面向对象有三个主要特征,分别是封装性、继承性和多态性。
7.1.2.1 封装
封装分为数据储存的封装和对方法的封装归类
class Person:
def __init__(self,n,a,g):
self.name = n
self.age = a
self.gender = g
def show(self):
temp = '我是%s,年龄%s,性别%s'%(self.name,self.age,self.gender,)
print(temp)
obj = Person('薛奎','20','太监') #将数据直接封装到对象里,方便使用 ,得有__init__
obj.shouw()
class Files:
def write(self,content):
with open(self.file,mode='w',encoding ='utf-8')as f1:
f1.write(content)
f1.close()
def read(self):
with open(self.file,mode='r',encoding='utf-8')as f2:
content = f2.read()
f2.close()
obj = Files() #又称实例化一个对象
obj.file = 'read.txt' #obj就是方法中的self ******
obj.write('123')
obj.read()
7.1.2.2 继承
class Base:
def f1(self):
pass
class Foo(base): #类(类)即代表括号外是派生类, 里面是基类,运行类内部,没有的会去基类里寻找
def f2(self):
pass
obj = Foo()
obj.f1()
obj.f2()
多个类中如果有公共的方法,可以放到基类中避免重复编写。
class Base:
def f1(self):
print('base.f1')
class Foo(Base):
def f2(self):
self.f1()
print('foo.f2')
def f1(self):
print('foo.f1')
obj = Foo()
obj.f2() #结果 'foo.f1' 'foo.f2' obj是实例化的foo,优先在 Foo中寻找
class Base:
def f1(self):
self.f2()
print('base.f1')
def f2(self):
print('base.f2')
class Foo(Base):
def f2(self):
print('foo.f2')
obj = Foo()
obj.f1() #结果 'foo.f2' 'base.f1'
注意事项:self 到底是谁?self 是哪个类创建的,就从此类开始找,自己没有就找父类。
7.1.2.3 多态
一个类表现出来的多种状态
什么是鸭子模型?
对于