2025年python class学习笔记

python class学习笔记6 2 定义类 当你打算将对象的状态和功能 粘 在一起时 就是定义类 bank1 py class Account pass def account name number balance 100 acct Account acct name name acct number number acct

大家好,我是讯享网,很高兴认识大家。
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 } ] }''' 

json表示法说明:
1个json对象 用1个{},{属性1:值1,属性2:值2,…}
多个json对象 用1个[{},{},{}] 数组[]

python的差异

默认将python的字典编码为json对象格式时,字典的键只能是字符串不是字符串引发ValueError错误.
import json
json.dumps(obj) #python对象转换为json对象

小讯
上一篇 2025-04-01 22:09
下一篇 2025-03-07 14:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46054.html