zoukankan      html  css  js  c++  java
  • python——面向对象(一)

    """""
    一、定义类并执行类中的方法
    class类名:
    def 方法名(self,arg):
        print(arg)
        return1
    
    中间人(就是自定义的一个变量、对象而已)=类名()
    ret=中间人.方法名(1)
    print(ret)
    
    elf指中间人
    self必须加
    
    面向对象有三种特性
    1.封闭
    2.继承
    3.多态:python原生多态
    """
    #例子:
    class Bar:
        def foo(self,arg):
            print(self,arg)
    
    z1=Bar()
    print(z1)
    z1.foo(111)
    print('=============')
    z2=Bar()
    print(z2)
    z2.foo(666)
    #结果为:
    # #<__main__.Bar object at 0x000001F048FF77F0>
    # <__main__.Bar object at 0x000001F048FF77F0> 111
    # =============
    # <__main__.Bar object at 0x000001F048FF7B70>
    # <__main__.Bar object at 0x000001F048FF7B70> 666
    
    class Bar:
        def foo(self,arg):
            print(self,self.name,arg)
            #这里self就是为z 提取z中的name  也就是说self就是中间变量或者说是带进去那个数的自己
    
    z=Bar()
    z.name='lin'
    z.age=20
    z.gender='male'
    z.foo(666)
    #结果为:
    #<__main__.Bar object at 0x000002360E0B7BA8> alex 666
    """
    二、构造方法
    """
    
    class Bar:
        def __init__(self,name,age):
            """
            __initt__为构造方法
            """
            print('123')
        def foo(self):
            print('456')
    
    z=Bar('lin',20)
    #这样可以传进去
    #一般将这些东西都放在init里。也是进行一个初始化
    #当构建了一个z=Bar()之后 内部会自动执行init方法
    #python自动帮你调用
    print(z)
    z.foo()
    """
    结果为:
    123
    <__main__.Bar object at 0x000001EC423A7E48>
    456
    """
    
    #三、应用
    class Person:
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def show(self):
            print('%s-%s'%(self.name,self.age))
    
    lin=Person('Lin',20)
    lin.show()
    ZZZI=Person('zzzi',20)
    ZZZI.show()
    """""
    Lin-20
    zzzi-20
    """""
    
    #四、三大特征之一:继承
    
    class Grandfather:
        def piaochang(self):
            pass
    class Father(Grandfather):#父类、基类
        def chifan(self):
            pass
        def hejiu(self):
            pass
        def shuijiao(self):
            pass
    
    class Son(Father):#子类、派生类
        def wc(self):
            pass
    s=Son()
    s.chifan()#父亲里的所有函数都可以继承
    s.piaochang()#父亲继承了爷爷
    """"
    同时 若是不想继承父类的某个函数设为x 可以在子类中重新写一个
    这样默认会执行子类的
    若父类子类都想执行可以用方法:
    1.super(当前类名,self).x()   
    推荐用super 其为固定写法
    2.也可以用Father.x(self)
    """
    #2.多继承问题
    class F0:
        def a(self):
            print('F0')
    
    class F1(F0):
        def a(self):
            print('F1')
    
    class F2:
        def a(self):
            print('F2')
    
    class S(F1,F2):
        pass
    obj=S()
    obj.a()
    """""
    其结果为F1
    当多继承有相同函数时,优先选择第一个继承的
    多继承只能在python和C++中使用
    若F1中同样没有时 优先在F1的父类中找 
    永远优先最左边 类似二叉树
    同时若两边有公共的父类的话 优先子类 最后在共同父类(根)里找
    """
  • 相关阅读:
    C#字符串(截取)
    字符串的截取(从指定位置)
    UVALive 7146 Defeat the Enemy(贪心+STL)(2014 Asia Shanghai Regional Contest)
    UVALive 7148 LRIP(树的分治+STL)(2014 Asia Shanghai Regional Contest)
    Google Code Jam Round 1A 2015 解题报告
    编程之美2015资格赛 解题报告
    ZOJ 3781 Paint the Grid Reloaded(BFS)
    【转】赞一下huicpc035
    【转】lonekight@xmu·ACM/ICPC 回忆录
    【转】[退役]纪念我的ACM——headacher@XDU
  • 原文地址:https://www.cnblogs.com/zzzi/p/11478435.html
Copyright © 2011-2022 走看看