码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象之入门-《初识》

时间:2020-04-02 22:45:40      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:info   耦合   增删改   通过   字母   图片   理解   其他   strong   

一、面向对象初识:

   1、结构上理解:类由两部分组成

     class  A:      # class是类的关键字,类名首字母默认大写

       name = ‘zyl‘   # 静态属性,静态变量,静态字段

       def  func1(self):  # 函数,动态属性,方法

          pass

   2、函数 vs 面向对象:

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

      2、面向对象抽象,它是一种思想,站在上帝的角度去理解它。

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

def register(argv):
    pass

def login(argv):
    pass
def shoppingcar(argv):
    pass



class Shopping_Car:
    def __init__(self):  # 特殊方法
        pass

    def register(self):
        pass

    def login(self):
        pass
    def shoppingcar(self):
        pass

   3、类,对象

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

      对象:对象是类的具体表现。

二、类名,对象的使用:

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

   类名:

    1、查看类中的所有属性及方法 __dict__(查看单个属性和方法也可以用__dict__[ ],但不建议用)

    2、查看,(增删改)类中的某个,某些属性用(万能的点).

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

class Person:
    animal = 高级动物
    walk_way = 直立行走
    language = 语言

    def eat(self):
        print(吃饭)
    def word(self):
        print(人类需要工作)

print(Person.__dict__)        # 查    所有的属性和方法  {‘__module__‘: ‘__main__‘, ‘animal‘: ‘高级动物‘, ‘walk_way‘: ‘直立行走‘, ‘language‘: ‘语言‘, ‘eat‘: <function Person.eat at 0x0000024742B176A8>, ‘word‘: <function Person.word at 0x0000024742B17730>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Person‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Person‘ objects>, ‘__doc__‘: None}

print(Person.animal)          #
Person.animal = 低级动物    #
Person.name = alex         #
del Person.animal            #
print(Person.name)
print(Person.animal)  #AttributeError: type object ‘Person‘ has no attribute ‘animal‘属性已被删除
Person.eat(12)             # 执行一个方法
print(Person.word(123))     # 执行方法并返回 None
Person.age = 18
print(Person.age)

 

 

   对象:

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

      1、在内存中开辟了一个对象空间

      2、自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入

      3、执行__init__方法,给对象空间封装相应的属性。

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(该吃吃,该喝喝,啥事别忘心里搁)

    def work(self):
        print(人类都需要工作。。。)

obj = Person(alex,1000,小眼睛)  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
print(obj)  # 对象空间的内存地址
print(obj.name1)

 

    对象操作对象空间:

      1、查看对象空间所有的属性 __dict__

        print(对象名.__dict__)

      2、对象操作对象的某个属性(增删改查)用(万能的点)       

技术图片
obj.sex = ‘男‘      # 增
del obj.eye1        # 删
obj.eye1 = ‘大一点‘  # 改
print(obj.name1)    # 查 单个
print(obj.__dict_)  # 查 全部对象(返回一个字典)

# alex
# {‘name1‘: ‘alex‘, ‘age1‘: 1000, ‘eye1‘: ‘小眼睛‘}
技术图片

 

 

      3、对象操作类空间的属性:只能查

print(obj.animal)          # 现在对象空间找,没有的话到类空间里找
obj.animal = ‘低级动物‘     # 不能改变类空间的属性,所以是新增一个对象属性
print(obj.animal)          # 打印的是对象空间里新增的属性
print(obj.__dict__)
print(Person.__dict__)

 

      4、对象操作类空间的方法

print(obj)  # 打印对象空间内存地址
obj.eat()   # 对象操作类空间的方法

 

三、类名称空间,对象名称空间:

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

      先从自己空间找,没有此属性他会通过类对象指针去类空间找,类中找不到到父类中找

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

技术图片

 

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

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

      同一个类实例化出来的对象之间是不能互相访问的

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

    给对象封装属性:对象名.__init__  (任意位置)

面向对象之入门-《初识》

标签:info   耦合   增删改   通过   字母   图片   理解   其他   strong   

原文地址:https://www.cnblogs.com/zyling/p/12623351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!