码迷,mamicode.com
首页 > 编程语言 > 详细

python类与对象的初识

时间:2018-08-23 22:14:36      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:str   16px   结构   阶段   color   面向对象   实现   nbsp   一个个   

 

什么是对象?之前我们求一个字符串的长度,通过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()

python类与对象的初识

标签:str   16px   结构   阶段   color   面向对象   实现   nbsp   一个个   

原文地址:https://www.cnblogs.com/colin1314/p/9526382.html

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