1:面向对象不是所有情况都适用。
2面向对象编程
a:定义类
calss Foo: 注意顶一个类的时候首字母必须是大写
def (方法一)(self,bb)
pass
b:根据创建对象,创建和Foo实列的。
使用对象去类中找方法。
3:self,是一个形式参数,python内部传递的。
4:类+括号就会自动执行类中的__init__方法:创建了一个对象在__init__方法中执行具体的封装操作。
__init__:有一个特殊的名字:构造方法
__del__:解释器销毁对象的时候会自动调用,特殊的名字:析构方法
封装:
使用场景:当同一类型的方法具有相同的参数时,直接封装到对象即可。
使用场景:把类当做模板,创建多个对象(对象内封装的数据可以不一样)
5:派生类可以继承基类中的所有功能。
6:派生类和基类同时存在,优先找派生类。
面向对象有三个特性:
封装 , 继承 , 多态。
面向对象编程,类,def函数。 参考:
class Oldboy: 定义类
def fetch(self,backend):
print(backend)
def add_record(self,backend,record):
pass
#创建对象
ret = Oldboy()
ret.fetch("www.xxx.com") ret.add_record("www.xxx.com","www.ooo.com") #这个不执行 #输出结果 www.xxx.com
class OldBoy:
def __init__(self,bk): #bk是形参,对应外部穿过来的实参
'''
构造方法
:return: bk
'''
self.backend = bk #self.backend = bk相当于在__init__中bk的参数
def fetch(self):
print('fetch中self的内存地址:',self)
return self.backend #backend用来接收init方法中bk的参数
def add_record(self,record):
print('add_record中self的内存地址:',self)
return self.backend + record
obj = OldBoy("www.oldboy.org") #创建了一个对象obj,然后把www.oldboy.org封装到类中对应的形参bk
# obj.backend = "www.oldboy.org"
print('obj对象的内存地址:',obj)
ret = obj.fetch()
print(ret)
obj2 = OldBoy(2)
# obj2.backend = 2
print('obj2对象的内存地址:',obj2)
ret = obj2.add_record(3)
print(ret)
class Abcd: #父类
def chi(self):
print(self,name +"吃" )
def he(self):
print(self,name + "喝")
class Dog(Abcd): #继承父类
def __init__(self,name):
sela.name = name
def jiao(self):
print(self.name + "汪")
ret = Dog("小黑")
ret.chi()
ret.he()
ret.jiao()
#执行结果
小黑 吃
小黑 喝
小黑 汪
#多个继承
class Abcd(object):
def f1(self):
print("Abcd")
class A(Abcd):
def f(self):
print("A")
class B(Abcd):
def f1(self):
print("B")
class C(A):
def f(self):
print("C")
class D(B):
def f1(self):
print("D")
class E(C,D):
def f(self):
print("E")
ret = E()
ret.f1()
#执行结果
D