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

Python之面向对象(一)

时间:2019-06-21 21:06:05      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:onclick   lap   python2   实现   父类   通过   nbsp   属性   列表   

一、三大编程范式

python是一门面向对象的编程语言。

不同的编程样式有不同的风格,不同的风格有他不同的牛逼之处。

三大编程范式:

  1. 面向过程编程
  2. 函数式编程
  3. 面向对象编程

二、面向对象设计与面向对象编程

面向对象设计(Object oriented design):将一类具体事物数据和动作整合到一起,即面向对象设计

面向对象设计(OOD)不会不会特别要求面向对象语言,事实上,OOD可以由纯结构化语言来实现,比如C,但是如果想要结构具备对象性质和特点的数据结构,就要在程序上多做努力。

技术图片
 1 def Dog(name, gender):
 2     def ini(name, gender):
 3         dog1 = {
 4             "name": name,
 5             "gender": gender,
 6             "jiao": jiao,
 7             "chi": chi,
 8         }
 9         return dog1
10     def jiao(dog):
11         print("一条狗 【%s】,汪汪汪"%dog["name"])
12     def chi(dog):
13         print("一条狗 【%s】 正在吃东西"%dog["name"])
14     dog1 = ini(name, gender)
15     return dog1
16 
17 if __name__ == "__main__":
18     d1 = Dog("狗1",5)
19     print(d1)
20     d1["jiao"](d1)
面向对象设计

 

面向对象编程(Object-oriented programing):用定义类+实例/对象的方法去实现面向对象的设计

技术图片
 1 class Dog:
 2     def __init__(self, name, gender):
 3         self.name = name
 4         self.gender = gender
 5     def jiao(self):
 6         print("一条狗 【%s】,汪汪汪" % self.name)
 7     def chi(self):
 8         print("一条狗 【%s】 正在吃东西"%self.name)
 9 if __name__ == "__main__":
10     d1 = Dog("狗1", 3)
11     print(d1)
12     d1.chi()
面向对象编程

四、小结

 一门面向对象的语言不一定强制你写OO方式的程序,例如 C++可以认为是更好的C;而JACA则要求万物皆类

在Python中,类和OOP都不是日常编程所必须的,尽管它从一开始就设计是面向对象的。

用面向对象语言编写程序,和一个程序是面向对象设计的,两者八竿子打不着,是两码事。

五、类和对象

1.什么是类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物。

2.什么是对象:你看到的每一个事物都是一个对象,可以理解对象就是一个具体的事物。

3.类与对象的关系:对象是由类产生的,类是对象的模板。

4.什么是实例化:由类产生对象的过程叫实例化,类实例化的结果就是一个对象,或者叫实例。

5.1 类的相关知识

类的声明:

1 ‘‘‘
2 class 类名:
3     ‘类的文档字符串‘
4     类体
5 ‘‘‘

# 创建一个类
class Data:
  pass
# 用类实例化一个对象
d1 = Data()

 

 金典类和新式类:

大前提:
1.只有在python2中才有新式类和金典类,python3中都是新式类
2.新式类和金典类的最大区别在于,所有新式类继承至少一个父类
3.所有类不管是否声明父类,都默认继承object父类。

在python2中:
金典类:

class 类名:
    pass

新式类:
class 类名(父类):
    pass


python3中,上面连种定义都是新式类。

 

 

类的属性:

  1. 数据属性
  2. 函数属性

注意:类和对象都用 点 类访问自己的属性

class Dog:
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

    def jiao(self):
        print("一条狗 ,汪汪汪" )

    def chi(self):
        print("一条狗 正在吃东西")


if __name__ == "__main__":
    Dog.jiao(123)
    print(Dog.__dict__)  # 结果是一个字典,包含类的所有属性
    print(dir(Dog)) # 结果是一个列表,包含类的所有属性名

5.2 对象的相关知识

 对象是由类实例化得来的。

实例化:

class Dog:

    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

    def jiao(self):
        print("一条狗 【%s】,汪汪汪" % self.name)

    def chi(self):
        print("一条狗 【%s】 正在吃东西" % self.name)


if __name__ == "__main__":
    d1 = Dog("狗1", 3)   # 类名加上括号就是实例化 d1 就是一个实例

5.3 类属性和对象(实例)属性

技术图片
class Dog:
    master = "xioahong"

    def __init__(self, name, gender):

        self.name = name
        self.gender = gender

    def jiao(self):
        print("一条狗 【%s】,汪汪汪" % self.name)

    def chi(self):
        print("一条狗 【%s】 正在吃东西" % self.name)


if __name__ == "__main__":
    # ==================================类属性的增删改查
    # 查看类属性
    print(Dog.master)
    # 修改类属性
    Dog.master = "xiaoming"
    print(Dog.master)
    # 删除类属性
    del Dog.master
    # 增加类属性
    print(Dog.__dict__)
    Dog.master = "me"
    Dog.home = "myhome"
    print(Dog.__dict__)

    # =================================实例属性的增删改查
    d1 = Dog("Dog1",5)
    # 查看
    print(d1.__dict__)
    # 增加
    d1.mather = "小花"
    print(d1.__dict__)
    # 不要通过修改底层字典的字典属性
    # d1.__dict__["father"] = "小草"
    # print(d1.__dict__)

    #
    d1.name = "Dog2"
    print(d1.name)
    # 删除
    del d1.name
    print(d1.__dict__)
类和对象属性

 实例查找属性也是按照区域查找,先找实例自己的,然后才是类的。

 

Python之面向对象(一)

标签:onclick   lap   python2   实现   父类   通过   nbsp   属性   列表   

原文地址:https://www.cnblogs.com/kaixindexiaocao/p/10590855.html

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