子父类继承
方法会自动继承,属性 super.__init__(属性)
方法改写
对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法。
def ElectricCar(Car):
--snip--
def fill_gas_tank():
"""电动汽车没有油箱"""
print("This car doesn't need a gas tank!")
类分散
不断给ElectricCar类添加细节时,我们可能会发现其中包含很多专门针对汽车电瓶的属性和方法。在这种情况下,我们可将这些属性和方法提取出来,放到另一个名为Battery的类中,并将一个Battery实例用作ElectricCar类的一个属性
class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""
初始化父类的属性,再初始化电动汽车特有的属性
"""
super().__init__(make, model, year)
self.battery = Battery()
第十章了,打开文件之类的东西file_reader.py
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents) #添加绝对路径或者相对路径
输出会多一个空行,使用rstrip方法删去;
如果用for循环打印每一行,发现空白行更多了,继续使用rstrip方法
使用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外
访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该
列表:你可以立即处理文件的各个部分,也可推迟到程序后面再处理。
lines = file_object.readlines()
repalce能替换字符串
with open(,) as
打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)或让你能够读取和写入文件的模式(‘r+’)。如果你省略了模式实参,Python将以默认的只读模式打开文件。
如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入(‘w’)模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。 (我感觉r+应该最屌,也好像是a)
字符串处理
split()从指定字段分开
count() 找出特定字符串数量
保存数据
函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。
json.load() 读取内容
蛮好玩的用法,是否读取json
如果以前存储了用户名,就加载它否则,就提示用户输入用户名并存储它
try:
with open(filename) as f_obj:
username = json.load(f_obj)
except FileNotFoundError:
username = input("What is your name? ")
with open(filename, 'w') as f_obj:
json.dump(username, f_obj)
print("We'll remember you when you come back, " + username + "!")
else:
print("Welcome back, " + username + "!")