python类与对象的初识

Posted colin1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python类与对象的初识相关的知识,希望对你有一定的参考价值。

 

什么是对象?之前我们求一个字符串的长度,通过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类与对象的初识的主要内容,如果未能解决你的问题,请参考以下文章

Python初识类与对象

8.python之面相对象part.1(初识类与对象)

Python之路 - 面向对象初识

python初识面向对象

python初识面向对象

面向对象之继承与派生