九、类
9.1 类的基本构成和含义
类,通常用于模拟一类事物。
类中通常可以包含许多属性,例如,模拟一类小狗。
class Dog:
def __init__(self,name,age):
self.name=name
self.age=age
def sit(self):
print(f'{self.name} is sitting.')
my_dog=Dog('Willow',6)
这类小狗有姓名,年龄两属性,并可模拟小狗蹲下的动作。
其中方法init必不可少,它包含三个形参,self指向实例本身的引用,且会自动传递。所以当我们建立一只小狗的时候,不用传递参数self。
9.2 访问,调用和修改属性
访问属性,直接调用即可。
print(my_dog.name)
print(my_dog.age)
my_dog.sit()
修改属性的值,直接赋值即可。
my_dog.name="Cherry"
9.3 子类与父类
编写类,并不需要总是从空白开始编写。当我们想要编写一个类的特殊版,比如车中的新能源汽车,比如狗中的萨摩耶,这个时候我们需要新编写的类继承到原有类的一些属性。
例如,动物与狗。
# 父类
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
print(f"{self.name}正在吃东西")
# 子类
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def bark(self):
print(f"{self.name}({self.breed})正在汪汪叫")
编写子类的过程,要对父类中包含的属性进行初始化,同时可以在此基础上增添新的属性。
此时再调用该类,进行创建。
# 创建实例并调用方法
my_dog = Dog("旺财", "拉布拉多")
my_dog.eat() # 调用父类方法
my_dog.bark() # 调用子类方法
子类可运用父类的功能。这种方法可极大程度简化了代码的编写。
而如果想要修改父类的属性,只需要在子类之下,用同名属性进行重新修改即可,这里不再赘述。
9.4 导入类
当编写一个复杂程序,为了让代码看上去更清晰容易分解,我们可能会用多个模块装载程序的每一部分。其中,用程序装载类,是常见的操作。
我们需要一些操作将这种类引用到主代码所在的模块或其他模块中。
导入方法与导入函数类似,这里不再赘述。
十、文件和异常
10.1.读取文件及方式
打开文件必须先读取文件。在与模块同一目录下创建文件,才可被直接读取。
with open('pi_digits.txt')as file_object:
contents=file_object.read()
print(contents.rstrip())
这样,python就可以直接读取数据并打印出来。
这种方式称为直接路径。
当所想打开的文件不在同一目录,就得使用绝对路径索引。
file_path='/home/ehmatthes/other_files/text_files/filename.txt'
with open(file_path) as file_object:
另外,同一目录下,也可以使用名字直接打开文件,并进行逐行读取。
file_name='pi_digits.txt'
with open(file_name) as file_object:
for line in file_object:
print(line.rstrip())
10.2 写入文件和附加内容
要将文本写入文件,调用open()函数的时候需要提供另一个实参,通过将输出写入文件。即使关闭终端窗口,这些输出也依然存在。可以再程序运行结束后查看这些输出。
file_name='programming.txt'
with open(file_name,'w') as file_object:
file_object.write("I love programming.\n")
file_object.write("Me too.\n")
此时打开txt文件,想要写的输出已经在里面自动保存过了。
结语:关于异常和测试的内容,由于专业性的问题,本专栏不再涉及。感兴趣的朋友可以自行学习。