zoukankan      html  css  js  c++  java
  • 初识面向对象

    class Person: # 注意class 与 def 的不同   $$$  Person——》类名
        country = 'China'         # 创造了一个只要是这个类就一定有的属性
                                  # 叫做类属性 也称静态属性 不会随对象的创建而改变
        def __init__(self,*args):  # __init__ --》初始化方法 self是对象,是一个必须传的参数
            print(self.__dict__)  # self就是一个可以储存很多属性的大字典
            self.name = args[0]   # 只不过与def语法相比往字典里添加属性的方式发生了一些变化
            self.hp = args[1]
            self.aggr = args[2]
            self.sex = args[3]
            print(self.__dict__)
            print(id(self))
        # 现在self里只有属性,下面再定义方法
        def walk(self,n):         # self可以改成其他名称的参数,它只是一个局域变量名,结果是不变的  
                                  # 若函数写到class里,就成了方法,一般情况下必须传self参数,且必须写在第一个
            print('走走走')
            print('%s走走走,走了%s步' % (self.name,n))
     
    print(Person.country) # 类名 可以查看类中的属性,不需要实例化就可以查看
    
    alex = Person('狗剩儿',100,1,'不详') # '狗剩儿',100,1,'不详' 赋给*args  $$$$ 实例化:调用类,然后拿到对象alex的过程
                                         # 
    print(alex.__dict__) # 证明self就是alex ,alex 和 self 其实一样,是字典
    print(id(alex))      # self 和 slex 的ID 一样
    
    print(alex.name)     # 查看属性值
    
    print(Person.__dict__) # 发现有刚刚再Person类下定义的walk方法 并用它查看所有属性
    print(Person.__dict__['country'])
    print(alex.__dict__)
    
    alex.__dict__['name'] = '二哥'
    print(alex.__dict__)
    print(alex.name)
    alex.name = '二哥'
    print(alex.name)
    
    Person.walk(alex,5)      # 调用方法 类名.方法名(对象名称)
    alex.walk(5)            # alex.walk = Person.walk(alex)  即 对象.方法名()
    
    # 对象 = 类名()
    # 过程:
         # 类名Person(),首先会创造一个alex对象 ,创建了一个self变量(创建class时,就已经有self了)
         # 调用init方法,类名括号里的参数会被这里的*args接受
         # 执行init方法
         # 返回self给对象alex,而不用return ,--》def 与 class 的不同
    # 对象能做的事:
         # 查看属性 
         # 调用方法
         # __dict__ 对于对象的增删改查操作都可以通过字典的语法,但最好还是通过属性修改,如alex.name = '二哥'
    # 类名能做的事:
         # 实例化
         # 调用方法
         # __dict__ 对于类中的名字只能看不能操作
    • 大致执行过程

    作者:chauncylii

    出处:https://www.cnblogs.com/passengerlee/p/11965398.html

    版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

    觉得文章不错,点个关注呗!

  • 相关阅读:
    Linux 文本编辑器 vim
    Redis 学习(一)
    Linux服务管理
    Linux系统管理
    Linux文件系统管理
    深入解析 composer 的自动加载原理 (转)
    Composer 的学习
    GBDT算法简述
    随机森林入门与实战
    主成分分析PCA
  • 原文地址:https://www.cnblogs.com/passengerlee/p/10744018.html
Copyright © 2011-2022 走看看