python (5) 类及其文件的用法

学习内容

一. 类如何定义
二.属性与方法和相关用法
三.继承与相关用法
四.文件的相关用法

一.类的定义

1.类是客观事物的抽象,对象是类的实例化。
类用class关键字来定义,定义的一般方法为:
class 类名:
类的内部实现
类名一般首字母大写

二.属性和方法

1.先看一段代码

class Dog:
   def __init__(self, name, age):
         self.name = name
         self.age = age
         self.love=0
  def sit(self):
         print(self.name.title() + " is now sitting.")
  def roll_over(self):
         print(self.name.title() + " rolled over!")
 print(self.name.title() + " rolled over!")

类中的函数被称之为方法

  1. 方法:init()是用来初始化属性的。
    例如上边的这个例子,它就初始化了Dog这个类中俩个属性,名字和年龄。__init__方法的第一参数永远是self,表示创建的类实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
    2.属性:就是一些特征,在调用一个类的时候需要对属性初始化,它在类中一般与self绑在一起。

其次有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器会自己把实例变量传进去:
例如使用上边这个类:

class Dog:
   def __init__(self, name, age):
         self.name = name
         self.age = age
         self.love=0
  def sit(self):
         print(self.name.title() + " is now sitting.")
  def roll_over(self):
         print(self.name.title() + " rolled over!")
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.") 

先是对my_dog进行初始化,即输入属性,在类中为它初始化。后边俩条语句是调用了类中的方法,因此对应的结果如下:

My dog's name is Willie.
My dog is 6 years old. 

访问属性:
类创建的实例.属性(句点表示法)
调用方法:
类创建的实例.方法(句点表示法)
2.修改属性的值:
(1)直接修改属性的值

class Dog:
   def __init__(self, name, age):
         self.name = name
         self.age = age
         self.love=0
  def sit(self):
         print(self.name.title() + " is now sitting.")
  def roll_over(self):
         print(self.name.title() + " rolled over!")
my_dog = Dog('willie', 6)
my_dog.name=kiss
print(my_dog.name)

此处直接对实例中的name属性做出修改.
(2).通过方法修改属性的值
例如:

class Dog:
   def __init__(self, name, age):
         self.name = name
         self.age = age
         self.love=0
   def sit(self):
         print(self.name.title() + " is now sitting.")
   def roll_over(self):
         print(self.name.title() + " rolled over!")
   def update_love(self,mileage):
         self.love=mileage
my_dog = Dog('willie',6)
my_dog.update_love(520)
print(my_dog.love)

输出结果为:

520

三.继承

编写类时,并非总是要从空白开始。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
例如:

class Car:
   def __init__(self, make, model, year):
      self.make = make
      self.model = model
      self.year = year
      self.odometer_reading = 0

   def get_descriptive_name(self):
      long_name = str(self.year) + ' ' + self.make + ' ' + self.model
      return long_name.title()

   def read_odometer(self):
      print("This car has " + str(self.odometer_reading) + " miles on it.")

   def update_odometer(self, mileage):
     if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
     else:
            print("You can't roll back an odometer!")

   def increment_odometer(self, miles):
       self.odometer_reading += miles
class ElectricCar(Car):
   def __init__(self, make, model, year):
 """初始化父类的属性"""
       super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name()) 

super()是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。
输出的结果为:

2016 Tesla Model S

(2).将实例作为属性

class Car:
   def __init__(self, make, model, year):
      self.make = make
      self.model = model
      self.year = year
      self.odometer_reading = 0

   def get_descriptive_name(self):
      long_name = str(self.year) + ' ' + self.make + ' ' + self.model
      return long_name.title()

   def read_odometer(self):
      print("This car has " + str(self.odometer_reading) + " miles on it.")

   def update_odometer(self, mileage):
     if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
     else:
            print("You can't roll back an odometer!")

   def increment_odometer(self, miles):
       self.odometer_reading += miles
class ElectricCar(Car):
   def __init__(self, make, model, year):
 """初始化父类的属性"""
       super().__init__(make, model, year)
 class Battery():
       def __init__(self, battery_size=70):
            self.battery_size = battery_size
       def describe_battery(self):
            print("This car has a " + str(self.battery_size) + "-kWh battery.")
class ElectricCar(Car):
     def __init__(self, make, model, year):
     super().__init__(make, model, year)
     self.battery = Battery()

my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery() 

输出结果为:

2016 Tesla Model S
This car has a 70-kWh battery

四,文件的相关用法

1.从文件中读取信息并打印

存储在程序的目录下

文件内容:
3.1415926535
 8979323846
 2643383279
文件名字pi_digits.txt  
with open('pi_digits.txt ') as file_object:
    comtents = file_object.read()
    print(comtents.rstrip())//除去末尾的空字符串

其中open(‘pi_digits.txt’)返回一个表示文件pi_digits.txt的对
象;Python将这个对象存储在我们将在后面使用的变量中。

要让Python打开不与程序文件位于同一个目录中的文
件,需要提供文件路径,它让Python到系统的特定位置去查找,可以根据文件绝对路径查找。
2.写入文件

run以下代码 将会在目录中新产生一个空文件并写入i love you这句话
with open('data.txt','w') as file_object:
    file_object.write("i love you\n")

在写入时,write函数参数内可用换行符\n让文件内容更加整洁
打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)或让你能够读取和写入文件的模式(‘r+’)。如果你省略了模式实参,Python将以默认的只读模式打开文件。
在现有文件中附加内容:

with open('data.txt','a') as file_object:
    file_object.write("\nbut i love me better")
run代码以后 可在文件中看到附加的内容

3.存储数据
存储数据的俩种函数,json.dump()和json.load()
其一,存入一个列表

import json
number = [1,3,5,7,9]
filename = "numbers.json"
with open(filename,"w") as file_object:
    json.dump(number,file_object)

run代码之后就可以在目录下找到filename并且在里面看到存储的列表了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值