python class学习笔记

python class学习笔记6.2 定义类当你打算将对象的状态和功能”粘”在一起时,就是定义类bank1.pyclassAccount:passdefaccount(name,number,balance=100):acct=Account()a

python

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注