《Python编程从入门到实践》——学习python的第十四天

Python学习的第十四天

  • 前言

前言

今天是学习python的第十四天,上次已经讲到了import了,现在咱们要学习下一个比较重要的板块了 。咱们话不多说,直接上干货吧。

类就是面向对象的编程,你所编写的表示现实世界中的事物和情景的类,并由此来创建对象。根据类创建对象称为实列化。

创建和使用类
根据某个事物的特征分成某一类,后面具有这些特征的变量都会归为这一类。

创建dog类

class Dog:#这里定义了一个名为Dog的类。
    """一次模拟小狗的简单尝试"""
#第二行是文档字符串对类的功能进行了解释
    def __init__(self,name,age):#类中的函数成为方法。前后两个下划线,避免Python默认方法与普通方法发生名称冲突。Python会自动运用该方法
        """初始化属性name和age"""
        self.name = name
        self.age = age
#该方法中,包括了self、name、age三个形参,其中self是必不可少的,且必须放在其它形参的前面,Python调用这个方法来创建dog实例的时候,将自动传入实参self,相当于方向标,使得相关变量自动传递到这里
#以self为前缀的变量可供类中的所有方法使用,这种也直接被称为属性了。
    def sit(self):#这里不需要额外的信息只需要一个形参self
        """模拟小狗收到命令时蹲下。"""
        print(f"{self.name} is now sitting")

    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")

根据类创建实例

class Dog:
    """一次模拟小狗的简单尝试"""
#第二行是文档字符串对类的功能进行了解释
    def __init__(self,name,age):#类中的函数成为方法。前后两个下划线,避免Python默认方法与普通方法发生名称冲突。Python会自动运用该方法
        """初始化属性name和age"""
        self.name = name
        self.age =age
#该方法中,包括了self、name、age三个形参,其中self是必不可少的,且必须放在其它形参的前面,Python调用这个方法来创建dog实例的时候,将自动传入实参self,相当于方向标,使得相关变量自动传递到这里
#以self为前缀的变量可供类中的所有方法使用,这种也直接被称为属性了。
    def sit(self):#这里不需要额外的信息只需要一个形参self
        """模拟小狗收到命令时蹲下。"""
        print(f"{self.name} is now sitting")


    def roll_over(self):
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")

my_dog = Dog('Willie',6)#创建特定小狗的实例,并使用提供的值来设置属性name和age,而将这个实例传递给my_dog。这里使用实参会直接调用方法--init--

print(f"My dog's name is {my_dog.name}")
print(f"My dog is {my_dog.age} years old.")

结果:
My dog’s name is Willie
My dog is 6 years old.

访问属性

获取小狗的名字使用

my_dog.name

句点表示法,Python获悉属性,让其找到实例my_dog,在Dog类中引用这个属性的时候,使用的是self.name,self处使用实例

调用方法(不是–init–)

my_dog.sit()
my_dog.roll_over()

结果:
Willie is now sitting
Willie rolled over!

要调用方法,可指定实例的名称(这里是my_dog)和要调用的方法 格式:实例的名称.调用方法

创建多个实例
创建多个实例等同于根据类创建一个新的实例

使用类和实例
首先创建一个类

class Car:
    """一次模拟汽车的简单尝试"""


    def __init__(self,make,model,year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year

    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return  long_name.title()


my_new_car = Car('audi','a4',2019)
my_new_car.get_descriptive_name()
print(my_new_car.get_descriptive_name())

结果:
2019 Audi A4

给属性指定默认值

创建实例时,有些属性无须通过形参来定义,可在方法__init__()来指定默认值

class Car:
    """一次模拟汽车的简单尝试"""

    def __init__(self,make,model,year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0#给属性设置设置默认数值,在__init__方法中e,且定义默认属性时,不需要在括号中加入


    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return  long_name.title()


    def read_odometer(self):
        """打印一条指出汽车里程的消息"""
        print(f"This car has {self.odometer_reading} miles on it")



my_new_car = Car('audi','a4',2019)
my_new_car.get_descriptive_name()
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()

结果:
2019 Audi A4
This car has 0 miles on it

修改属性的值

方法一:直接修改属性的值
最简单的方法就是通过实例来直接访问它。

my_new_car.odometer_reading = 23 # 直接通过实例访问里程的属性然后进行修改
my_new_car.read_odometer()

结果:
This car has 23 miles on it

方法二:通过方法修改属性值

实现内部的自我更新,无需直接访问属性来进行修改,只需要传递数值。新建了一个新方法,在该方法中设置了一个参数,将之前的属性 赋给该参数,再在最后调用一下该方法对其进行调用即可

def updata_odometer(self,mileage):
    """对里程表进行实时更新"""
    self.odometer_reading = mileage

my_new_car.updata_odometer(23)
my_new_car.read_odometer()

结果:
This car has 23 miles on it

方法三:通过方法对属性的值进行递增

上述的两个方法都是直接转递全新的值,有时候我们需要在原有的基础上加上特定的值

def increase_odometer(self,miles):#在方法二的基础上新建了一个新的方法,来表示增量,并警告不能为赋值
    """增加新加的里程"""
    if miles >= 0 :
        self.odometer_reading += miles
    else:
        print("nmd hai xiang xiu gai cheng fu zhi")

my_new_car.updata_odometer(25)
my_new_car.read_odometer()


my_new_car.increase_odometer(25)
print(my_new_car.odometer_reading)

结果:

2019 Audi A4
This car has 25 miles on it
50

今天的学习就到这里了,类是一个很重要的板块所以真的需要我们好好学,加油

你可能感兴趣的:(新手,python学习)