6.2 定义类
当你打算将对象的状态和功能”粘”在一起时,就是定义类
bank1.py
class Account:
pass
def account(name,number,balance=100):
acct = Account()
acct.name = name
acct.number = number
acct.balance = balance
return acct
def desposit(acct,amount):
if amount <= 0 :
print('存款金额不能为负!')
else:
acct.balance += amount
def withdraw(acct,amount):
if amount > acct.balance:
print('余额不足!')
else:
acct.balance -= amount
def desc(acct):
return "Account('{name},'{number}','{balance}')".format(
name=acct.name,number=acct.number,balance=acct.balance
)
bankdemo1.py
import bank1
acct = bank1.account('rose', '123-12345', 1000)
bank1.desposit(acct, 500)
bank1.withdraw(acct , 200)
print(bank1.desc(acct))
bank2.py
class Account:
def __init__(self,name,number,balance):
self.name=name
self.number=number
self.balance=balance
def desposit(self,amount):
if amount <= 0 :
print('存款金额不能为负!')
else:
self.balance += amount
def withdraw(self,amount):
if amount > self.balance:
print('余额不足!')
else:
self.balance -= amount
def __str__(self):
return "Account('{name},'{number}','{balance}')".format(
name=self.name,number=self.number,balance=self.balance
)
bankdemo3.py
import bank2
acct = bank2.Account('rose', '123-12345', 1000)
acct.desposit(500)
acct.withdraw(200)
print(acct)
6.2.1 定义__init__() 方法
在python中意味着在类之外其他位置不要直接调用,基本上都有个函数来调用这类方法 这里就是 Account()
在调用__init__()方法时创建的Account实例会传入作为方法的第一个参数,虽然参数名可自定义,在python的惯例中第一个参数命名为self
6.2.2 定义操作方法
在python中对象的方法的第一个参数一定是对象本身,python设计哲学
(Zen of Python) 显示比隐式好,在方法中以self为前置名称一定是对实例属性进行存取,不会是针对局部变量
本质上__init__()、desposit()、withdraw()本质都是函数,类中对对象的操作习惯叫方法
6.2.3 定义__str__()方法
当print()方法是个实例,在执行print(acct)时会调用__str__()方法获取实例描述字符串返回
如果调用str(acct)就会调用acct的__str__()方法
小结:
在python类中__xxx__()在外部不可见,但有函数调用它
例如:
str() 是str()
init() 是类名()
等
6.1 使用try except
高级语言通常都内置了一套try…except…finally…的错误处理机制
try: #要监控的代码块
print(‘try…’)
r=10/0
print(‘result:’,r)
except ZeroDivisionError as e: #有异常捕捉后处理
print(‘except:’,e)
finally:
print(‘finally…’) #不管是否要异常都会执行
print(‘over’)
当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块,至此,执行完毕。
6.2 文件操作
try:
f = open(‘test1.py’, ‘r’)
#f = open(‘hello.c’, ‘r’, encoding=‘utf-8’)
print(f.read())
#except FileNotFoundError as err:
print(err)
finally:
print(f)
if f:
f.close()
print(‘end’)
如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示.
但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:
with open(‘test.py’, ‘r’) as f:
print(f.read())
6.1 json
计算机通信中数据交换格式有两种:
json javascript object notation 轻量级数据表示
xml 扩展标记
http://www.w3school.com.cn/json/index.asp
6.1.1 python对象转json
json在javascript生态圈非常流行轻量交换格式,易读易写易解析且提供层次结构
python极为相近的模仿了js文字表示法:
js表示法:
obj = {
name:'robin',
age:33,
childs:[
{
name:'jessy',
age:10
},
{
name:'rosa',
age:7
}
]
}
python中用字典与列表来模拟:
obj = {
'name':'robin',
'age':33,
'child':[
{
'name':'jessy',
'age':10
},
{
'name':'rosa',
'age':7
}
]
}
接近json格式但注意json格式是:
名称必须双引号包括
值可以双引号包括字符串,或数字,true,false,null,js数组(类似python列表)或子json格式
josnText='''{
"name":"robin",
"age":33,
"child":[
{
"name":"jessy",
"age":10
},
{
"name":"rosa",
"age":7
}
]
}'''
或
josnText=’{“name”:“robin”,“age”:33,“child”:[{“name”:“jessy”,“age”:10},{“name”:“rosa”,“age”:7}]}’
json表示法说明:
1个json对象 用1个{},{属性1:值1,属性2:值2,…}
多个json对象 用1个[{},{},{}] 数组[]
python的差异
默认将python的字典编码为json对象格式时,字典的键只能是字符串不是字符串引发ValueError错误.
import json
json.dumps(obj) #python对象转换为json对象
今天的文章python class学习笔记分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/82053.html