zoukankan      html  css  js  c++  java
  • python学习 day18

    面向对象初识

    ### 面向过程:

    # 例1:
    s1 = '字符zifu' count = 0 for i in s1: count += 1 # 例2: l1 = [1, 2, 3, 4] count = 0 for j in l1: count += 1

    ### 函数

    def func(s):
        count = 0
        for i in s:
            count += 1
        return count

    ### 函数

     1 # auth:
     2  def login():
     3      pass
     4  def regisgter():
     5      pass
     6 
     7 # account:
     8  def func1():
     9      pass
    10  def func2():
    11      pass
    12 
    13 # shoppingcar:
    14 def shopping(username,money):
    15     pass
    16 def check_paidgoods(username,money):
    17     pass
    18 def check_unpaidgoods(username,money):
    19     pass
    20 def save(username,money):
    21     pass

    ### 面向对象:面向对象是一类相似功能函数的集合体。

     1,第一个优点: 更清晰化,更规范化。

     2,面向对象,必须要站在上帝的角度,去考虑问题。类,其实就是一个公共模板;对象,就从具体的模板实例化出来。

    # auto
    class LoginHandler:
        def login(self):
            pass
        def regisgter(self):
            pass
    
    # account
    class Account:
        def func1(self):
            pass
        def func2(self):
            pass
    
    # 购物车
    class ShoppingCar:
        def shopping(username,money):
            pass
        def check_paidgoods(username,money):
            pass
        def check_unpaidgoods(username,money):
            pass
        def save(username,money):
            pass
    # 面向对象的结构
    
    '''
    class 类名():
        
        变量
        
        函数(方法) 
    '''

    例:
    class Human:
        """
        此类主要是构建人类
        """
        mind = '会思想'    # 静态属性 属性 静态变量 静态字段
        language = '使用文字'
        # dic = {}
        # l1 = []
    def __init__(self,name,sex,age,hobby):    # 方法 函数 动态属性 # print(self,name,sex,age,hobby) # print(666) self.n = name self.s = sex self.a = age self.h = hobby def work(self): print(self) print('人类会工作') def tools(self): # self.color = 'blue' print('人类都会使用工具')

    ### 类名

    1)类名操作类中的静态属性

    第一种:# 查,“   类名.__dict__ ”(Human.__dict__)查看类中所有内容时使用。

    print(Human.__dict__)              # 查看类中所有内容
    '''
     {'__module__': '__main__', '__doc__': '
        此类主要是构建人类
        ', 'mind': '有思想', 'language': '实用语言',
    '__init__': <function Human.__init__ at 0x0000024F6ABCD9D8>, 'work': <function Human.work at 0x0000024F6ABCDA60>,
    'tools': <function Human.tools at 0x0000024F6ABCDAE8>, '__dict__': <attribute '__dict__' of 'Human' objects>,
    '__weakref__': <attribute '__weakref__' of 'Human' objects>}
    ''' print(Human.__dict__['mind']) # 查看 静态变量 mind 中的内容 # 有思想 Human.__dict__['mind'] = '无脑' # 无法对类中内容进行更改,否则报错 print(Human.__dict__)

    第二种:万能的 “  .  ” 可以增删改查类中的静态属性。

    Human.walk = '直立行走'   ### 增    # 增加了 walk=‘直立行走’ 的属性
    print(Human.walk)
    
    del Human.mind  ### 删    # 将 mind = ‘有思想’ 属性删除
    Human.mind = '思维zhang' ### print(Human.mind) # mind = ‘有思想’ 改为了 mind = ‘思维zhang’ print(Human.mind) ### 查 # mind = ‘思维zhang’

    2)类名操作类中的方法(除去特殊方法:静态方法,类方法之外,一般不会通过类名执行类中的方法)。

    方法: “  类名.方法名(参数)  ”  <--->  Human.work(1231)

    Human.work(1231)
    # 1222
    # 人类会工作
    
    Human.tools(111)    
    # 人类都会使用工具

    ### 对象

    ----   “  类名()”  这是一个实例化过程,就会产生一个对象。

    例:obj = Human()  产生了一个实例化对象 obj 

    obj = Human        # 实例化一个过程

    实例化一个对象需要经历的3件事情(即 实例化一个对象的过程):

    1)产生一个空的对象空间。

    print(obj)  # <__main__.Human object at 0x0000019BC6A0F828>

    2)自动执行类中的 __init__ 方法并且将这个空的对象空间传给 self 。

    print(obj)  

    3)在 __init__ 中通过self给这个空间添加属性。

    obj = Human('小胖','',20,'')        # 实例化对象

    # 对象  操作  对象空间  的属性

    1)" obj.__dict__  " 查询对象中所有的属性

    print(obj.__dict__)        # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

    2)通过万能的  " . "  的方式操作对象中的单个属性。

    obj.job = 'IT'      #
    
    del obj.n      #
    
    obj.s = ''     #
    print(obj.s)
    
    print(obj.__dict__)    #

    3)对象可以查询类中的属性。

    print(obj.mind)  # 查询 mind = “会思想”
    print(obj.language)  # 查询 language = “使用语言”
    print(obj.a)    # 查询  a = 20
    obj.a
    = 666 print(obj.a)  # 改 a = 666

    4)对象可以执行类中的方法。

           对象执行类中的所有方法(除去3个特殊方法)Python解释器都会将对象空间主动传给方法的第一个参数self。

    print(obj)        
    # <__main__.Human object at 0x00000284476FBCF8>
    
    obj.work()
    # <__main__.Human object at 0x00000284476FBCF8>
    # 人类会工作

     self:类中方法的第一个形参 约定俗成 写  self  便于统一,self 接受的就是 对象空间。

     1 class Human:
     2     """
     3     此类主要是构建人类
     4     """
     5     mind = '会思想'  # 静态属性 属性 静态变量 静态字段
     6     language = '使用文字'
     7     # dic = {}
     8     # l1 = []
     9     def __init__(self,name,sex,age,hobby):  # 方法 函数 动态属性
    10         # print(self,name,sex,age,hobby)
    11         # print(666)
    12         self.n = name
    13         self.s = sex
    14         self.a = age
    15         self.h = hobby
    16 
    17     def work(self):
    18         print(self)
    19         print('人类会工作')
    20 
    21     def tools(self):
    22         # self.color = 'blue'
    23         print('人类会使用工具')
    24         print('猩猩会使用工具')
    25         print('猴子会使用工具')
    obj = Human('小胖', '', 20, '')
    print(obj.__dict__)  # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}
    
    obj.tools()
    # 人类会使用工具
    # 猩猩会使用工具
    # 猴子会使用工具
    print(obj.__dict__)  # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}
    self = [1,2,3]
    self.append(666)
    obj = self
    print(obj, self) # [1, 2, 3, 666] [1, 2, 3, 666]
    
    self.append(777)
    obj.append(888)
    print(obj, self)    # [1, 2, 3, 666, 777, 888] [1, 2, 3, 666, 777, 888]

    # 多个对象

    # 多个对象
    # xiaopang = Human('小胖','男',20,'美女')
    # xiangye = Human('相爷','男',18,'肥女')
    # print(xiangye,xiaopang)
    # print(xiaopang.__dict__)
    # print(xiangye.__dict__)

     内容总结:

    # 内容回顾:
        面向对象:将一些相似功能的函数集合到一起。
        类:具有相同属性和功能的一类事物。
        对象:类的具体体现。
            1.将一些相似功能的函数集合到一起
            2.站在上帝的角度考虑问题,类就是一个公共模板。
        类的结构:
        class Person:
            mind = "有思想"        # 静态属性 静态字段
            def __init__(self, name, age)
                self.n = name
                self.a = age
            def work(self):         # 动态属性 方法
                print('能工作')
        类名:
            1,Person.mind  # 万能的‘ . ’
            2,Person.__dict__ 查询类中所有内容
            3,Person.work(111)      # 不建议这样做
        对象:
            Person()    # 产生一个对象
            obj = Person('barry', 20)
            1)在内存中开辟一个空的对象空间
            2)自动执行 __init__ 方法,先把对象空间传给self,后面参数依次传入
            3)执行 __init__ 代码,将封装好属性的对象空间返回给了obj
            1,查询对象的属性:
                obj.__dict__
            2,查询对象单独的属性:
                obj.name
            3,查询类中的属性:
                obj.mind
            4,查询执行类中的方法:
                obj.work()
                Person.work(obj)
  • 相关阅读:
    树莓派笔记——了解与购买树莓派(1)
    SQLserver 备份和还原 失败
    lua coroutine
    lua for循环
    leetcode 46. 全排列
    sprintf、vsprintf、sprintf_s、vsprintf_s、_snprintf、_vsnprintf、snprintf、vsnprintf 函数辨析
    rapidxml的常见读写操作
    C++11 可变参数模板构造string列表
    Fedora 28 设置yum代理
    Linux命令计算文件中某一列的平均值
  • 原文地址:https://www.cnblogs.com/zhongmin/p/10268057.html
Copyright © 2011-2022 走看看