Colin_Gu

导航

 

 

什么是对象?之前我们求一个字符串的长度,通过for循环或者while循环求解,随着课程的深入,我们可以通过调用函数来实现,用具体代码来实现如下:

1 # 使用for循环
2 s1 = 'cfhgjrfekdcmfvjrgte'
3 count = 0
4 for i in s1:
5     count += 1
6 print(count)
1 # 使用函数实现:
2 def mylen(argv):
3     count = 0
4     for i in argv:
5         count += 1
6     return count
7 s1 = 'cfhgjrfekdcmfvjrgte'
8 
9 print(mylen(s1))

接下来我们看一个例子

1 class A:
2     name = 'colin'
3     def func1(self):
4         pass

这种含有class定义的我们称为类。从结构上理解,上面可分为两部分:

1 如:name = 'colin' 这部分称为:静态属性,静态变量,也可以称为静态方法

2 如:def 定义的函数,我们称为动态属性,也可以称为方法。

那函数与面向对象有什么不同呢?先举下面两个例子:

购物车系统,为了实现注册,登陆与购物不同功能时,使用函数:

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

通过上面的对比可以看出:

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

2 面向对象抽象,它是一种思想

3.面向对象的程序可扩展,对象都是一个个独立的。它具有耦合性和差异性

我们定义了一个类,如何去查看类中的所有属性以及方法?

1 这里就提供一个方法__dict__

class Person:

    animal = '高级动物'
    walk_style = '直立行走'
    language = '语言'

    def eat(self):
        print('该吃吃,该喝喝,啥事别忘心里搁')

    def work(self):
        print('人类都需要工作。。。')
print(Person.__dict__)
print(Person.__dict__['name'])  # 报错  通过__dict__方式 单独的属性及方法可以查,但是不能增删改
Person.__dict__['animal'] = '低级动物'   # 报错  TypeError: 'mappingproxy' object does not support item assignment
Person.__dict__['name'] = 'alex'   # 报错,不能增加

所以,从上面的例子可以看出,一般用__dict__查看类中的所有属性及方法,不能进行其他操作。

2 第二种查看方法,使用'.',该点的使用,在某些情况下可以实现类的增删改。

print(Person.animal)   # 查   高级动物
Person.name = 'colin'  # 增  colin
print(Person.name)
Person.animal = '低级动物' # 改 低级动物
print(Person.animal)
del Person.walk_style       #
print(Person.__dict__)

3 操作方法:一般不通过类名操作,因此,需引入对象。

对象

什么是对象?先引入下面的例子:

class Person:

    animal = '高级动物'
    walk_way = '直立行走'
    language = '语言'

    def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
        self.name = name
        self.age = age
        self.eye = eye

    def eat(self):
        # print(self)
        print('该吃吃,该喝喝,啥事别忘心里搁')

    def work(self):
        print('人类都需要工作。。。')
obj = Person('colin',27,'小眼睛')  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
print(obj)
print(obj.name)
实例化过程内部进行了三个阶段:
1,在内存中开辟了一个对象空间
2,自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入。
3, 执行__init__方法 给对象空间封装相应的属性。

对象操作是指对对象空间操作,同与类操作相同,由增删改查操作。

对象查看对象空间所有的属性使用:__dict__
print(obj.__dict__)
对象操作对象空间的某个属性,通过'.'来实现增改查功能。
obj.sex = ''  #
del obj.eye1  #
obj.eye = '大一点'  #
print(obj.name1)
print(obj.__dict__)
对象操作类空间的属性 只能查
print(obj.animal)
obj.animal = '低级动物'
print(obj.animal)
print(obj.__dict__)
print(Person.__dict__)
对象操作类空间的方法
obj.eat()

posted on 2018-08-23 21:15  Colin_Gu  阅读(93)  评论(0编辑  收藏  举报