zoukankan      html  css  js  c++  java
  • python-day15---面向对象

                                        面向对象
    零:面向对象的说明:
     面向过程和面向对象:
        面向对象:一切以对象为中心(解决的问题本身)
        面向过程:一切以过程为中心(解决问题的步骤)
        面向对象我们用   “ class 类名:”    来表示面向对象的函数,然后再实例化类(即是将类实际到一个具体的东西)
    一:面向对象中类的定义:
      总结:类与对象的关系: 类是对事物的总结. 抽象的概念. 类⽤来描述对象. 对象是类的实例
             化的结果. 对象能执⾏哪些⽅法. 都由类来决定. 类中定义了什么. 对象就拥有什么
        类和对象的自我解释:类就是指一个大集群的对象,对象则是指这个大集群里面的具体的某一个对象。可能是张三,也可能是旺财

    001):类名命名规则:#类名首字母大写 例如:class Car:
      先创建一个类  (例如:   class man:      这就是创建一个类,名字叫做 man  )
            区别:class man:  与class man():  区别:就是加了括号就是实例化了,不加括号就是没有实例化
            类的应用的实际例子:-----class Car:  #我们创建了一个名字为 Car 的类
            c=Car() #将类实例化变成一个对象,定义第一辆车,车的名字叫做 c
            c.color="red"
            c.user="旺财"
            c.gulu="4个"
            c.paizhao="深A0000"
            print(c)
            print("车的颜色:%s,
    车的所有者:%s,
    车的轱辘:%s,
    车的拍照:%s
    " % (c.color,c.user,c.gulu,c.paizhao))
    
            定义第二辆车,车的名字叫做c2
            c2=Car()
            c2.price="一千万美刀"
            c2.chandi="湖北"
            c2.size="一百平"
            print("第二辆车车的价格:%s,
    第二辆车的产地:%s,
    第二辆车的大小:%s" % (c2.price,c2.chandi,c2.size))
    二:构造函数:在创建‘对象的时候给对象设置一些初始化的信息。用__init__(self) 函数
    self和__init__ 的说明:
        ########def __init__(self)是一个构造方法的固定写法。
            __init__ :就是我们在实例化一个对象时,使每个实例都有具有自己的具体属性
            self:就是这个构造方法在执行这个类时候,将对象传递给self ,self:是谁调用的,谁就是self,
                  像上面车的例子,如果是c2调用的,那么self就是c2。c掉调用的,self就是c
        
    class Car:
            def __init__(self,color,price,size,gulu):#在里面构造一个方法:将对象所拥有的属性放在里面:
                self.color=color
                self.price=price
                self.size=size
                self.gulu=gulu
    
            def kaiche(self,11):        #谁调用,self就是谁,
                print("我要开%s,价格是%s,颜色是%s,轮子是%s" % (kaiche,self.price,self.color,self.gulu))
                c1=Car("红色","一亿美刀","一百平方","8个")
                c1.kaiche("跑车")
                c1=Car("111","一亿美刀","一百平方","8个")
                print(c1.size)
                c2=Car("222","2亿美刀","122平方","16个")
                print(c2.gulu)
    例子01
        
    #用面向对象完成用户登陆
                class denglu():
                def __init__(self,name,password):  #将登陆所需要的用户名和密码封装
                    self.name=name
                    self.password=password
    
                def login(self,uname,passwd):
                        if uname==self.name and passwd==self.password:
                            return True
                        else:
                            return False
    
                user_1=denglu("x",2)
                ret=user_1.login(input("请输入用户名:"),int(input("请输入密码:")))
                print(ret)
    例子02
        
    面向对象案例三:
            class HeShang:
            #定义这个类的基本属性信息:
            def __init__(self,name,age,tizhong):
                self.name=name
                self.age=age
                self.tizhong=tizhong
    
            #定义这个和尚类的 基本功能
            def shuomingta(self):
                print("%s这个和尚,今年有%s 岁了,体重有%s" % (self.name,self.age,self.tizhong))
    
            def qiaomuyu(self):
                print("%s一天敲木鱼一万下" % self.name)
            diyige=HeShang("张三","23","300斤")  #实例化这个和尚的到具体对象,并给他一个具体属性信息
            diyige.qiaomuyu()
            diyige.shuomingta()
    例子03
     三:面向对象的三大基本特征:
    01:封装: (初步理解:我们刚才在在定义了一个类后,将这个类的基本属性放在了 def __init__(self) 及其下面的代码块中,
                 这个就是封装,我们已经把这个类的基本属性封装在这个构造函数中了)
    02:继承:就像继承家族财产一样,父辈有的财产,对于儿子辈来说,也是可以用的,继承的写法是在父辈继承后的类中,将父辈的
                类名写在括号中,下例子中:class HongHaiEer(Niu)  就是继承了它的上一个父辈类 Niu 的继承写法。当我们在调用HongHaiEer
                这个类时,虽然具有继承Niu这个类的下面的属性("牛魔王打架很厉害"),但是因为 HongHaiEer 这个类自己下面有"喷火"这个属性
                所以它是先调用自己的,如果自己没有,则才会去调用父类的属性。  如果子类之上有好几个父类(多继承),则会调用 离自己最近的
                那个父类,例如简写为:  class HongHaiEer(a,bc,d):  则HongHaiEer 这个子类会优先调用  a 这个父类
      
    实例化解释:
                class Niu:
                def da(self):
                    print("牛魔王打架很厉害")
    
                class HongHaiEer(Niu):
                    def da(self):
                        print("喷火")
    
                hhl = HongHaiEer()
                hhl.da()
    实例化解释
    03:多态 :同一个对象有多个形态( 多态这个特征还是需要多看java 和c++啊.....)
                多态会使程序具有超高的可扩展性. 面向对象思想的核心与灵魂. python自带多态
                实例解释:
                同一个对象. 拥有多种形态
                class Aniaml:
                    def dong(self):
                        print("动物可以动")
    
                class Cat(Aniaml):
                    def chi(self):
                        print("猫喜欢吃鱼")
    
                a = Cat()
                a.chi()         # 站在猫的角度. 可以吃
                a.dong()        # 站在动物的角度可以动
    
    
    
    
    
  • 相关阅读:
    刷题总结——table(ssoi)
    算法复习——差分约束(ssoi种树)
    刷题总结——谈笑风生(主席树+dfs序的应用)
    刷题总结——序列操作(权值线段树套树状数组)
    刷题总结——shortest(ssoi)
    算法总结——主席树(poj2104)
    刷题总结——路径(ssoi)
    刷题总结——鸭舌(ssoi)
    刷题总结——电影(ssoi)
    刷题总结——随机图(ssoi)
  • 原文地址:https://www.cnblogs.com/one-tom/p/9917623.html
Copyright © 2011-2022 走看看