0
点赞
收藏
分享

微信扫一扫

17总结及作业(面向对象继续和json)

林肯公园_97cc 2022-03-12 阅读 70
python

一、总结

  1. 属性

    1. 类属性(字段):直接定义在类中的变量就是类属性,通过‘类.’方式使用

    2. 对象属性:以‘self.属性名=值’方式定义在__init__方法中

    3. 对象属性的默认值:

    4. self:谁调用就指向谁,所以在对象中可以直接将self当成对象来使用

    5. 方法的选择:
      1)对象方法:如果实现函数功能需要对象(或者对象属性),就使用对象方法
      2)类方法:实现函数功能不需要对象(或者对象属性)的时候
      3)静态方法:既不需要类,也不需要对象

  2. 继承

    1. 继承:让子类拥有父类的属性和方法(子类:继承者;父类:被继承者,也叫超类)

    2. 语法: class 类名(父类列表):
      类的说明文档
      类的内容
      (如果定义类的时候没有写父类,name这个类默认继承py的基类-object)

    3. 在子类中添加内容:
      1)添加类属性和方法:直接在子类中定义新的属性和方法
      2)添加对象属性:

    4. super().init(父类参数):在子类中添加super,可以获取父类中的对象属性

    5. 多继承可以继承所有父类的所有方法和类属性,只能继承第一个父类的对象属性

  3. json

    1. json:是一个通用的数据格式,主要用于不同语言之间进行有效的数据沟通
    2. 要求:一个json有且只有一个数据;唯一的这个数据必须是json支持的类型的数据,json支持(数字、字符串、布尔值、空值、数组、字典)
      (数字:直接写,并支持科学计数法
      字符串:只能使用双引号,支持转义字符
      布尔值:只有true和false两个,都是小写
      空值:null
      数组:相当于py的列表,[元素1, 元素2, …]
      字典:相当于py的字典,但是键只能是字符串)
    3. py和json数据的相互转换:(先导入模块后)
      1)json转python:
      json python
      数字 int、float
      字符串 str
      布尔值 小写转大写
      空值 None
      数组 list
      字典 dict
      2)python转json:
      基本反过来,注意大小写和单双引号,多一个元组也可以转为json的数组
    4. json模块:
    5. json.loads(json格式字符串) — 将json格式字符串对应的json数据转为相应的python数据,括号内不是json报错
    6. json.dumps(python数据) — 将python数据转为json格式字符串

二、作业

  1. 定义一个狗类和一个人类:

    狗拥有属性:姓名、性别和品种 拥有方法:叫唤

    人类拥有属性:姓名、年龄、狗 拥有方法:遛狗

    class Dog:
        def __init__(self, name, sex, breed):
            self.name = name
            self.sex = sex
            self.breed = breed
        def call(self):
            print(f'{self.name}是一只{self.sex}的{self.breed},它正在叫唤')
    
    class Human:
        def __init__(self, name1, age, dog):
            self.name1 = name1
            self.age = age
            self.dog = dog
        def play(self):
            print(f'{self.name1}今年{self.age}岁了,他有一只{self.dog},他正在遛狗')
            
    a = Dog('大黄', '雄性', '金毛')
    a.call()
    b = Human('杰克', 18, '')
    b.play()
    
  2. 定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积

    class Rectangle:
        def __init__(self, long, wide):
            self.long = long
            self.wide = wide
        def area(self):
            return self.long * self.wide
        def perimeter(self):
            return (self.long + self.wide) * 2
    
    result1 = Rectangle(5, 2)
    result2 = Rectangle(5, 4)
    print(result1.area())
    print(result2.perimeter())
    
  3. 定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离

    class Point:
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
        def distance(self, o):
            return ((self.x - o.x) ** 2 + (self.y - o.y) ** 2) ** 0.5
    
    p1 = Point(0, 9)   # x,y
    p2 = Point(0, 5)
    print(p1.distance(p2))
    
  4. 定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切

    class Circle:
        Pi = 3.14
        def __init__(self, r, x, y):
            self.r = r
            self.x = x
            self.y = y
        def area(self):
            return Circle.Pi * self.r ** 2
        def perimeter(self):
            return Circle.Pi * self.r * 2
        def exterior_contact(self, b):
            if ((self.x - b.x) ** 2 + (self.y - b.y) ** 2) ** 0.5 == self.r + b.r:
                return "两圆外切"
            else:
                return '两圆不外切'
    
    yuan1 = Circle(7, 4, 7)
    yuan2 = Circle(5, 0, -5)
    
    print(yuan1.exterior_contact(yuan2))
    
    print(yuan1.area())
    print(yuan1.perimeter())
    print(yuan2.area())
    print(yuan2.perimeter())
    
  5. 定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度

    class Segment:
        def __init__(self, start, end):
            self.start = start
            self.end = end
        def length(self):
            return abs(self.end - self.start)
    
    a1 = Segment(-2, -9)
    print(a1.length())
    
举报

相关推荐

day17-面向对象和json

day17 - 面向对象和json

day17-面向对象作业

3.8-面向对象和json

17. 面向对象基础

面向对象总结

类和对象作业及答案

0 条评论