zoukankan      html  css  js  c++  java
  • 【Rollo的Python之路】面向对象 学习笔记 (一) 封装

    1.0.1 类的定义:

    class Bra:
        
        def foo(self,name,age,gender,content):
            print(name,age,gender,content)
            
    
    obj = Bar()
    obj.foo()

    函数定义:def +函数名(参数)

    面向对象:

      class >>>>>类,class Bar: >>>>>>名字叫Bar的类

      def >>>>>>方法,def foo():>>>>>>名字叫foo 的方法

      self>>>>>> 方法里面的第一个参数必须是self.

     

    class 类名:
        def 方法名(self,agr):
        print(arg)
    
    中间人 = 类名()
    
    执行:
    中间人.方法名()

    1.0.2 执行:

    函数:

      函数名(参数)

    面向对象:

      obj = Bar() >>>>创建中间人,叫:对象或实例

      执行:obj.foo() 

      面向对象:类与中间人的应用!!!

    1.0.3 self 是什么东西:

    执行的时候self 就是中间人!!!

    self  代指的是 调用方法的对象(中间人)

    class Bar:
    
        def foo(self,arg):
            print(self,arg)
    
    
    obj = Bar()
    print(obj)  #这个是直接打印obj
    obj.foo(123)  #这先执行打印self,再打印arg=123
    <__main__.Bar object at 0x000000000225EC88>
    <__main__.Bar object at 0x000000000225EC88> 123

    所以其实 这个self ====obj,哪个对象调用,就是self就代指哪个对象

    class Bar:
    
        def foo(self,arg):
            print(self,arg)
    
    
    obj = Bar()
    print(obj)
    obj.foo(123)
    print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
    
    obj1 = Bar()
    print(obj1)
    obj1.foo(6666)
    
    
    执行结果:
    
    <__main__.Bar object at 0x000000000284FCF8>
    <__main__.Bar object at 0x000000000284FCF8> 123
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    <__main__.Bar object at 0x000000000284FF60>
    <__main__.Bar object at 0x000000000284FF60> 6666

    self 是可以传参的:

    class Bar:
    
        def foo(self,arg):
            print(self,self.name,self.age,self.gender,arg)
    
    #这个时候self = obj,所以self.name = obj.name = 18
    obj = Bar() #这个时候self = obj
    obj.name = 'rollo' #这个时候self = obj,所以self.name = obj.name = rollo
    obj.age = 18 #这个时候self = obj,所以self.age = obj.age = 18
    obj.gender = 'male' #这个时候self = obj,所以self.gender = obj.gender = male
    obj.foo(6666)
    
    
    obj1 = Bar()    #这个时候self = obj1
    obj1.name = 'dump' #这个时候self = obj1,所以self.name = obj1.name = dump
    obj1.age = 19 #这个时候self = obj1,所以self.age = obj1.age = 19
    obj1.gender = 'female' #这个时候self = obj1,所以self.gender = obj1.gender = female
    obj1.foo(88888)
    
    
    执行结果:
    
    <__main__.Bar object at 0x0000000001D676D8> rollo 18 male 6666
    <__main__.Bar object at 0x0000000005858198> dump 19 female 88888

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

    封装就是用self.

    1.0.4 构造方法:__init__ ,类名+()自动 执行构造方法

      特殊作用:

        在

          obj = 类名()

          #创建对象

          #通过对象调用一个特殊方法。

    def __init__(self):
       
    class Bar:
        def __init__(self):
            print("666")
    
    obj = Bar()
    print(obj)  #666,然后执行init方法
    
    执行结果:
    
    666
    <__main__.Bar object at 0x000000000286FDA0>
        
    class Boot:
    
        def __init__(self,n1,n2,n3): #构造好参数在init里面,在外面只要调用 就OK
            self.name1 = n1
            self.name2 = n2
            self.name3 = n3
            self.name4 = n3
            self.name5 = n3
            self.name6 = n3
    
        def fun(self):
            print(self.name1,self.name2,self.name3)
    
    obj = Boot(4,5,6)
    print(obj.name1)
    obj.fun()
    class Person:
    
        def __init__(self,name,age):
            self.name = name
            self.age  = age
    
        def show(self):
            print('%s----%s' % (self.name,self.age))
    
    
    obj1 = Person('rollo',24)
    obj1.show()
    
    obj2 = Person('stock',36)
    obj2.show()
    
    
    #执行结果:
    
    rollo----24
    stock----36
    class Person:
    
        def __init__(self,name,age,):
            self.name = name
            self.age  = age
            self.bloodtype = 'O' #公共的,都有的就可以直接写好
    
        def show(self):
            print('%s----%s---%s' % (self.name,self.age,self.bloodtype))
    
    
    obj1 = Person('rollo',24)
    obj1.show()
    
    obj2 = Person('stock',36)
    obj2.show()

    适用场景:

      如果多个函数中有一些相同的参数时,转换成:面向对象编程。

  • 相关阅读:
    第6 章 : 应用编排与管理:Deployment
    第5 章 : 应用编排与管理:核心原理
    第4 章 : 理解 Pod 和容器设计模式
    第3 章 : Kubernetes 核心概念
    第2 章 : 容器基本概念
    第1 章 : 第一堂“云原生”课
    阿里云原生技术公开课程-讲师记录及视频链接
    Shell中的(),{}几种语法用法-单独总结
    折腾kubernetes各种问题汇总-<1>
    Kubernetes中Deployment部署故障排除
  • 原文地址:https://www.cnblogs.com/rollost/p/10923758.html
Copyright © 2011-2022 走看看