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