面向对象初识, 类名,对象的的使用, 类名称空间和对象名称空间

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

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_ _ 任意位置   ,也可以在对象空间中  也可以在类空间

 

posted @ 2018-08-23 22:36  一个稳定抗压的人  阅读(765)  评论(0编辑  收藏  举报