Python面向对象编程基础

面向对象关键词:类,对象,实例,方法

面向对象三大特性:封装,继承,多态

class Foo:      # 定义类名
    def f1(self):     # f1方法
        print("success")


obj = Foo()    # 创建对象
obj.f1()          # 通过对象执行方法

类和对象的关系:

 

self参数是一个Python自动会传值的参数,那个对象执行方法,self就是那个

class SQLhelp():

    def __init__(self, a1, a2, a3):         # 此方法会自动执行,那个对象执行的方法,self就是那个
        print("自动执行init")
        self.host = a1
        self.name = a2
        self.pwd = a3

    def find(self):
        pass


obj1 = SQLhelp('c1.salt.com', 'djc', '100')    # 参数分别对应a1,a2,a3
print(obj1.host)

>>>
自动执行
c1.salt.com

  

 对象中封装对象

 

class c1:
    def __init__(self, name, obj):
        self.name = name
        self.obj = obj

class c2:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show(self):
        print("MDZZ")

class c3:
    def __init__(self, a1):
        self.aaa = a1


c2_obj = c2("djc", 19)    # 要写在c1类之前
c1_obj = c1("sb", c2_obj)
ret = c1_obj.obj.name
print(ret)

>>>djc

c3_obj = c3(c1_obj)
ret2 = c3_obj.aaa.obj.show()
print(ret2)

>>>MDZZ

  

 

 

 简单单继承

# 继承相当于把父类的方法复制到了子类,而不是去父类里拿

class f1: # 父类,基类 def show(self): print("f1") def foo(self): print(self.name) class f2(f1): # 子类,派生类 def __init__(self, name) self.name = name obj = f2("djc") obj.foo() >>>djc

  

复杂单继承

class f1:
    def F1(self):
        self.F2()                # 执行f2的F2

    def F2(self):
        print("f1,F2")

class f2(f1):
    def F3(self):         
        self.F1()                 # 执行f1的F1

    def F2(self):
        print("f2,F2")

obj = f2()
obj.F3()       # 自己的方法优先,作为子类不要忽略继承的父类的方法,如果自己没有,才去父类里面找

>>>
f2,F2

 

简单多继承

class c1:
    def f2(self):
        print("c1")

class c2:
    def f2(self):
        print("c2")

class c3(c2,c1):         # 左边的优先
    def f3(self):
        pass

obj = c3()
obj.f2()

>>>c2

稍复杂多继承

class c0:
    def f2(self):
        print("c0")

class c1:
    def f2(self):
        print("c1")

class c2(c0):
    def f1(self):
        print("c2")

class c3(c2,c1):
    def f3(self):
        pass

obj = c3()
obj.f2()

>>>c0

  

 

复杂多继承

 

class c_2:
    def f2(self):
        print("c_2")

class c_1(c_2):
    def f2(self):
        print("c_1")

class c0(c_2):
    def f1(self):
        print("c0")

class c1(c_1):
    def f1(self):
        print("c1")

class c2(c0):
    def f1(self):
        print("c2")

class c3(c2,c1):
    def f3(self):
        pass

obj = c3()
obj.f2()

>>>c_1

 

 

 

class h5:
    def forever(self):
        self.run()

class h4(h5):
    def __init__(self):
        pass

    def run(self):
        self.process()

    def process(self):
        print("h4")

class h3(h4):
    def __init__(self):
        pass

class h2:
    def process(self):
        print("h2")

class A(h2, h3):
    pass

obj = A()
obj.forever()

>>>h2

 

 

  

 

posted @ 2016-11-13 21:03  LearnerC  阅读(426)  评论(0编辑  收藏  举报