面向对象和json
属性
定义类就是用代码描述清楚这个类拥有哪些相同功能和哪些相同属性的对象的集合,方法(函数)用来描述相同功能,属性(变量)用来描述相同属性。
属性分为两种:类属性、对象属性
1.类属性
怎么定义:直接定义在类中的变量就是类属性
怎么使用:通过’类.'的方式去使用
Student.a = 200
什么时候用:如果属性值不会因为对象不同而不一样的时候
2.对象属性
怎么定义:以’self.属性名 = 值’的方式定义在–init–方法中
怎么使用:通过’对象.'的方式使用
stu = Student()
print(stu.name,stu.age)
什么时候用:如果属性值会因为对象不同而不一样的的时候
练习:定义一个园类,用两个属性分别标识半径和圆周率
class Circle:
pi = 3.14
def __init__(self):
self.radius = 2
对象属性默认值
1)赋一个固定值:每次创建对象的时候不能重新赋值,只能在创建好对象以后修改属性的值
2)使用没有默认值的参数赋值
3)使用有默认值的参数赋值
class Person:
def __init__(self,name,age=18,gender = '男'):
self.name = name
self.age = age
self.gender = gender
def __repr__(self):
#return f'name:{self.name},age:{self.age},gender:{self.gender}'
return str(self.__dict__)
p1 = Person('小明')
p2 = Person('张三',17)
p3 = Person('小花',19,'女')
print(p1,p2,p3)
3.self的使用
self是谁调用就指向谁,所有在对象中可以直接将self当成对象来使用。(这个类的对象能做的事情self都可以做)
class Rectangular:
def __init__(self,length,width):
self.length = length
self.width = width
def get_area(self):
return self.length * self.width
def get_perimeter(self):
return (self.width+self.length)*2
r1 = Rectangular(2,3)
r2 = Rectangular(2,3)
print(r1.get_area())
print(r2.get_perimeter())
4.方法的选择
对象方法:如果实现函数的功能需要对象(需要对象属性)就使用对象方法
类方法:实现函数的功能不需要对象(或者对象属性)的前提下,需要类就使用类方法
静态方法:既不需要类,也不需要对象
class Math:
@staticmethod
def sum(a,b):
return a+b
class Chemistry:
@staticmethod
def sum():
print('a')
Math.sum(1,2)
Chemistry.sum()
继承
1.继承
继承就是让子类直接拥有父类所有的属性和方法。
子类:继承者
父类(超类):被继承者
语法:
class 类名(父类列表):
类的说明文档
类的内容
注意:如果定义类的时候没有写父类,那么就默认继承python的基类-object
2.在子类中添加
1)添加类属性和方法
直接在子类中定义新的类属性和新的方法
2)添加对象属性
3.多继承
可以继承所有父类的所有方法和属性,只能继承第一个父类的对象属性
class A:
def __del__(self):
self.a = 5
class B:
def __init__(self):
self.b = 2
class C(A,B):
# def __init__(self):
# super().__init__()
# self.c = 6
pass
x = C()
print(x.b)
json数据
1.json数据
josn是一种通用的数据格式,主要用于不同语言之间进行有效的数据沟通。
2.json数据格式
要求:1)一个json有且只有一个数据;2)唯一的这个数据必须是json支持的类型的数据
json支持的类型:
数字:数字直接写,并且支持科学计数法,例如:67、1.23、-23、+23.9、3e5
字符串:只能使用双引号,支持转义字符,例如:“abc”、“abc\n123”、“\u4e00”
布尔值:只有true和false两个值
空值:null
数组:相当于python的列表,[元素1,元素2,元素3,…]
字典:相当于python的字典,但是键只能是字符串
3.python数据和josn数据的相互转换
import json
json模式提供了python中所有和json操作相关的数据
1)json 转python
json pyhton
数字 int、float
字符串 str(双引号变单引号)
布尔值 true->True,false->False
空值 null->None
数组 list
字典 dict
json.loads(json格式字符串):将json格式字符串对应的json数据转换成相应的python数据
注:json格式字符串:指的是字符串内容是json的字符串
import json
json.loads('"abc"') #'abc'
json.loads('100')
json.loads('{"a":10,"10":20}')
1)python转json
int、float 数字
str 字符串(单引号变双引号)
bool 布尔
列表,元组 数组
dict 字典,键会编程双引号字符串
None null
json.dumps(python数据) - 将指定的python数据转换成json格式字符串