遇见Python | Day 9 我对Python类的浅薄理解

目录

一、创建和使用类

1、方法__init__()

二、根据类创建实例

1、访问属性

2、调用方法

3、创建多个实例

三、使用类和实例

1、给属性指定默认值

2、修改属性的值

(1)直接修改属性的值

(2)通过方法修改属性的值

(3)通过方法对属性的值进行递增 

四、继承

1、子类的方法__init__()

2、给子类定义属性和方法

3、重写父类的方法

4、将实例用作属性

5、模拟实物

五、导入类

1、导入单个类

2、在一个模块中存储多个类

3、从一个模块中导入多个类

4、导入整个模块

5、导入模块中的所有类

6、在一个模块中导入另一个模块


一、创建和使用类

        使用类几乎可以模拟任何东西。以Dog类举例。

class Dog():
    '''一个模拟小狗的简单例子'''
    def __init__(self,name,age) :
        '''初始化属性name和age'''
        self.name=name
        self.age=age

    def sit(self):
        '''模拟小狗蹲下'''
        print(self.name.title()+" is now sitting.")

    def roll_over(self):
        '''模拟小狗打滚'''
        print(self.name.title()+" rolled over!")

        创建类使用关键字class,根据约定,在Python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类。

1、方法__init__()

        类中的函数称为方法。__init__()是一个特殊的方法,每当创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线。这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。在上面的例子中,包含了三个形参:self、name、age。在这个方法中,形参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为Python调用__init__()方法创建Dog实例时,将自动传入形参self。每个与类想关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

二、根据类创建实例

my_dog=Dog('Tom',23)

1、访问属性

dog_age=my_dog.age
print(dog_age)

        访问age属性并打印。 

2、调用方法

        要调用方法,可指定实例的名称和要调用的方法,并用句点号分割它们。如调用sit()方法。

my_dog.sit()
'''Tom is now sitting.'''

3、创建多个实例

my_dog=Dog('Tom',23)
my_dog1=Dog('Boe',22)

三、使用类和实例

1、给属性指定默认值

        类中的每个属性都必须有初始值,哪怕是0或者空字符串。

        原来的类:

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

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

my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
'''
2016 audi a4
'''

        给属性指定默认值后:

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

    def get_desctriptive_name(self):
        long_name=str(self.year)+' '+self.make+' '+self.model
        return long_name
    def read_odometer(self):
        print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')

my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 0 miles on it.
'''

2、修改属性的值

(1)直接修改属性的值

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

    def get_desctriptive_name(self):
        long_name=str(self.year)+' '+self.make+' '+self.model
        return long_name
    def read_odometer(self):
        print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')

my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.odometer_reading=120
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 120 miles on it.
'''

(2)通过方法修改属性的值

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

    def update_odometer(self,mileage):
        self.odometer_reading=mileage
    def get_desctriptive_name(self):
        long_name=str(self.year)+' '+self.make+' '+self.model
        return long_name
    def read_odometer(self):
        print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')

my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.update_odometer(120)
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 120 miles on it.
'''

(3)通过方法对属性的值进行递增 

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

    def update_odometer(self,mileage):
        self.odometer_reading+=mileage
    def get_desctriptive_name(self):
        long_name=str(self.year)+' '+self.make+' '+self.model
        return long_name
    def read_odometer(self):
        print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')

my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.update_odometer(120)
my_new_car.read_odometer()
my_new_car.update_odometer(130)
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 120 miles on it.
This cacr has 250 miles on it.
'''

四、继承

class 子类名(父类名):

        属性和方法

        一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了父类所有属性和方法,同时还可以定义自己的属性和方法。

1、子类的方法__init__()

        创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。

2、给子类定义属性和方法

        让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法。

3、重写父类的方法

        对于父类的方法,只要它不符合子类模拟的实物的行为都可以对其进行重写。为此,我在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法这个父类方法,只会关注你在子类中定义的相应方法。

4、将实例用作属性

5、模拟实物

五、导入类

1、导入单个类

from 模块名 import 类名

2、在一个模块中存储多个类

3、从一个模块中导入多个类

from 模块名 import 类名1,类名2,...

4、导入整个模块

import 类名

5、导入模块中的所有类

from 模块名 import *

6、在一个模块中导入另一个模块

文章如有错误,请指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bjfu_yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值