zoukankan      html  css  js  c++  java
  • 面向对象初识, 类名,对象的的使用, 类名称空间和对象名称空间

    首先在结构上理解:面向对象分为两部分。

    class  A  :
            name = 'alex'      #静态属性,也可以叫静态变量或者静态字段,最好叫静态属性!!
            
             def func1( self )  #函数 动态属性。   最好叫  方法!!!
                    pass

    说一下函数和面向对象的区别

    函数
    def register(argv):
        pass
    ----------------------------
    面向对象
    class Shopping_Car:
        def __init__(self):  # 特殊方法
            pass
    
        def register(self):
            pass
    
        def login(self):
            pass
        def shoppingcar(self):
            pass

    1 函数封装一个功能,而面向对象封装多个相关的功能。

    2 面向对象比较抽象,它是一种思想,你得站在上帝的角度理解,你就是神。

    3 程序可扩展,对象都是一个个独立的,耦合性,差异性。

    ~~~类和对象~~~

    ##类:具有相同属性或者功能的一类实物

    ##对象:对象是类的具体体现

    一个公共框架,一个公共模型

    class Person:
    
        animal = '高级动物'
        walk_way = '直立行走'
        language = '语言'
    
        def eat(self):
            print('该吃吃,该喝喝,啥事别忘心里搁')
    
        def work(self):
            print('人类都需要工作。。。')
    -----------------------

    类名 就是Person
    1 查看类中的所有属性及方法 _ _dict_ _ 两个干干是没有空隙的 在博客显示太贴在一起了
    所以我动手分开了点。
    print(Person.__dict__) 可以查看所有 虽然可以从这干其他的 但是不推荐,太麻烦了,所以就不写出来了 ,记住 这个方法就用来查看所有,工作和学习中一般用到_ _dict_ _查看类中所有属性及方法,不进行其他的操作。
    2 查看 (增 删 改)类中某个,某些属性 用 万能的     点 。

    print (Person . animal)   #查

    Person.name = 'alex'      #增

    Person.animal = ' 超级人' # 改   注意一下  增 和改其实挺像的,增加 就是对象中没有 就直接增加了,改是有的 =右边直接改了

    del Person . walk_way  # 删

    3 操作方法  一般不通过类名操作!!!

    Person.work(1)  括号里随便输入  就能执行了

       

    对象

    class Person:
    
        animal = '高级动物'
        walk_way = '直立行走'
        language = '语言'
    
        def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
            self.name1 = name
            self.age1 = age
            self.eye1 = eye
    
        def eat(self):
            # print(self)
            print('该吃吃,该喝喝,啥事别忘心里搁')
    
        def work(self):
            print('人类都需要工作。。。')
    
    obj = Person('alex',1000,'小眼睛')  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
    # print(obj)
    # print(obj.name1)
    # print(obj.age1)
    # print(obj.eye1)
    对象:对象操作对象空间----对象操作对象空间所有的属性 _ _dict_ _
    print(obj.__dict__)

    对象操作对象的某个属性,增删改查 用 万能点 . 基本都是通过obj 来 默认就是写obj 比较有逼格
    del obj.eye1   # 删
    obj.sex = '男'  # 增

    obj.eye1 = '大一点' # 改
    print(obj.animal)   #查
    对象操作类空间的方法
    obj.eat()
     

    实例化过程内部进行了三个阶段:

    1,在内存中开辟了一个对象空间
    2,自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入。
    3, 执行__init__方法 给对象空间封装相应的属性。 下面插个图

    
    

    公用模版,公共框架

    class GameRole:
    
        rule = '游戏规则'
        hp = 1800
        def __init__(self,area,nickname,hp,ad):
            self.area = area
            self.nickname = nickname
            self.hp = hp
            self.ad = ad
    
        def attack(self):
            print('谁施展了一个攻击')
    
        def pen(self):
            self.pen=10000
    gailun = GameRole('德玛西呀','草丛伦',1000,75)
    yasuo = GameRole('艾欧尼亚','托儿所',500,150)
    penzi = GameRole('中国','键盘侠',10,100)
    # penzi.pen = 10000
    penzi.pen()
    print(penzi.__dict__)

    1 对象为什么能调用类中的属性与方法而且只是调用,不能改变

    gailun. 属性名, 先从自己的空间去找,如果没有此属性 他会通过类对象指针从类去找,如果类中找不到,会从父类中找。

    gailun.attcak = 666 # 给对象增加一个属性  attcak = 666

    ##对象只能查看类中的属性,不能增删改 类中的属性

    2 类能不能调用对象的属性?  不能

    print(GameRole.area)    直接报错

    3 对象与对象之间 可不可以 相互调用?

      同一个类 实例化出来的对象之间 是不能相互访问的! (但是可以有方法可以联系一波应该  ,想一下 比如 游戏里 两个英雄 合体技能  )

      不同类 实例化的对象有可能互相访问

     # 给对象封装属性:_ _init_ _ 任意位置   ,也可以在对象空间中  也可以在类空间

  • 相关阅读:
    es6+最佳入门实践(11)
    es6+最佳入门实践(10)
    es6+最佳入门实践(9)
    es6+最佳入门实践(8)
    es6+最佳入门实践(7)
    cookie、session、sessionid 与jsessionid之间的关系
    百面数据挖掘工程师-题库(1)
    远程桌面最新漏洞CVE-2019-0708 POC利用复现
    jQuery基础
    JavaScript 基础
  • 原文地址:https://www.cnblogs.com/single82/p/9527035.html
Copyright © 2011-2022 走看看