# 面向对象
定义一个类 Animals:
- 数据成员
- 名称
- 种类
- 年龄
- 性别
- 状态
- 构造函数
代码实现:
from functools import singledispatch | |
class Animals: | |
specie = "" | |
geander = "" | |
def __init__(self): | |
self.name = Cat.name | |
def toWalk(self): | |
self.status = 1 | |
print(self.name+": 要散步") | |
def toEat(self): | |
self.status = 2 | |
print(self.name+": 要食物") | |
def toDrink(self): | |
self.status = 3 | |
print(self.name+": 要喝水") | |
class Cat(Animals): | |
# 成员变量 | |
name = "" | |
specie = "" | |
age = 0 | |
status = 0 | |
def __init__(self, name, specie, age): | |
self.name = name | |
self.specie = specie | |
self.age = age | |
def miaomiaomiao(self): | |
print("大橘: 喵喵喵") | |
def setWeight(self, weight): | |
self.weight = weight | |
@singledispatch | |
def Eat(self, obj): | |
print(self.name+": 想吃"+obj) | |
@Eat.register(int) | |
def Eat(self, obj): | |
print(self.name+": 要吃 "+str(obj)+" 个") | |
cat = Cat('大橘', '中华田园', 1) | |
cat.toEat() | |
cat.toDrink() | |
cat.miaomiaomiao() | |
cat.setWeight(100) | |
print(cat.name+str(cat.weight)+" kg 重") | |
cat.Eat("小鱼干") | |
cat.Eat(99999) |
通过
@staticmethod
装饰器即可把其装饰的方法变为一个静态方法.
什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.
调用实例变量或类变量.
但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法.类方法通过
@classmethod
装饰器实现,类方法和普通方法的区别是,类方法只能访问类变量,不能访问实例变量.属性方法的作用就是通过
@property
把一个方法变成一个静态属性,调用时与调用属性的方式相同.- 把一个方法变成静态属性的作用:
当某个属性的值是一系列动作后才得到的结果.
当每次调用时,其实它都要经过一系列的动作才返回结果的,但这些动作过程不需要用户关心,用户只关心得到这个属性的值即可,也就是说用户只需要调用这个属性就可以了.
修改属性值
将由@proerty
装饰器(把一个方法变成一个静态属性)使用@proerty.setter
装饰器再装饰一下,此时 你需要写一个新方法(同名), 对这个属性值进行更改.删除属性
- 将由
@proerty
装饰器(把一个方法变成一个静态属性)使用@proerty.deleter
装饰器再装饰一下,此时 你需要写一个新方法(同名). - 使用
del
删除该实例所对应的属性方法(属性) 例如:del 对象.属性
- 把一个方法变成静态属性的作用:
# python JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
json.dumps 用于将 python 对象编码成 JSON 字符串。
import json | |
data = [ { 'b' : 2, 'd' : 4, 'a' : 1, 'c' : 3, 'e' : 5 } ] | |
json = json.dumps(data) | |
print(json) |
为了提高可读性,dumps 方法提供了一些可选的参数。sort_keys=True
表示按照字典排序 (a 到 z) 输出。indent
参数,代表缩进的位数separators
参数的作用是去掉,和 :
后面的空格,传输过程中数据越精简越好
import json | |
data = [ { 'b' : 2, 'd' : 4, 'a' : 1, 'c' : 3, 'e' : 5 } ] | |
json = json.dumps(data, sort_keys=True, indent=4,separators=(',', ':')) |
json.loads
用于解码 JSON 数据。该函数返回 python 字段的数据类型。
import json | |
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}' | |
text = json.loads(jsonData) #将 string 转换为 dict | |
print(text) |