记录Python学习之路-----------------------------------------------------类

最近因为双十一和工作的事很忙,一直没有时间忙Python,想着现在有空赶紧更新我的博客。最近也一直在搜集Python的习题,有空的时候就练一练。好了上一章复习了函数,这一章就讲述类的用法。


类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

在Python里,首字母大写的名称为类;举个实例具体说明:我们创建一个Dog类

class Dog():     #创建一个类
    def __init__(self,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!")    
        
    

1.使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。self为前缀的变量都可供类中的所有方法使用。

   __int__方法  特别注意:这里是两个下划线__,self.name=name 获取储存在形参name中的值,并将值存贮在变量name中,这个变量自动关联到创建的实例中。

2.在这里例子里创建了两个方法,模拟小狗坐下和翻滚的动作。

运行方法如下:

my_dog=Dog('Hachi',6)
print("MY dog's name is "+my_dog.name.title()+".")
print("MY dog's age is "+str(my_dog.age)+" years old!")
my_dog.sit()
my_dog.roll_over()

访问实例的属性,使用句号表示法,如my_dog.name 。访问方法也使用句号表示法

输出如下:

对于给属性指定默认值

class Dog():     #创建一个类
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.color='white'   #定义颜色,默认值为白色
    
    def sit(self):
        print(self.name.title()+" is now sitting.")

    def roll_over(self):
        print(self.name.title()+" rolled over!")  
    
    def color_describe(self):   #打印颜色
        print(self.name.title()+"'s color is "+self.color)

my_dog=Dog('hachi',6)
my_dog.sit()
my_dog.color_describe()
        

1.直接在方法__init__里添加一个新的变量,注意还是要以self为前缀。如上面,我定义了一个颜色为白色的变量color,输出如下:

2.对于设置的默认值,如何修改

a.直接修改属性的值

class Dog():     #创建一个类
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.color='white'   #定义颜色,默认值为白色
    
    def sit(self):
        print(self.name.title()+" is now sitting.")

    def roll_over(self):
        print(self.name.title()+" rolled over!")  
    
    def color_describe(self):   #打印性别
        print(self.name.title()+"'s color is "+self.color)

my_dog=Dog('hachi',6)
my_dog.sit()
my_dog.color='black'      #直接修改属性的值
my_dog.color_describe()
        

输出:

b.通过方法修改属性的值;在类里定义一个方法,用于更新属性值

class Dog():     #创建一个类
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.color='white'   #定义颜色,默认值为白色
    
    def sit(self):
        print(self.name.title()+" is now sitting.")

    def roll_over(self):
        print(self.name.title()+" rolled over!") 
        
    def update_color(self,colors):   #定义更新属性值
        self.color=colors     
    
    def color_describe(self):   #打印颜色
        print(self.name.title()+"'s color is "+self.color)

my_dog=Dog('hachi',6)
my_dog.sit()
my_dog.update_color('gray')
my_dog.color_describe()
        

首先在类里定义一个update_color的方法,他接受属性值,并储存到self.color中,之后调用方法,提供实参gray,再利用color_describe方法打印颜色,输出如下:

c.通过方法直接递增属性值;

采用书上的实例,定义一个Car类,来定义里程值:

class Car():
    def __init__(self,make,model,year):    #初始化
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0   #  定义里程表的默认值

    def get_describe(self):              #定义描述整体信息的方法
        long_name=str(self.year)+' '+self.make+' '+self.model
        return long_name.title()

    def update_odometer(self,milege):     #定义更新属性值方法
        if milege>=self.odometer_reading:
            self.odometer_reading=milege
        else:                             #确定数值不会回调
            print("wrong data!")
    
    def increment_odometer(self,miles):   #定义递增方法
        self.odometer_reading+=miles

    def read_odometer(self):     #打印里程数
        print("This car has "+str(self.odometer_reading)+" miles")
    
my_new_car=Car('BWM','A4',2018)
print(my_new_car.get_describe())
my_new_car.read_odometer()      #打印默认值

my_new_car.update_odometer(100)
my_new_car.read_odometer()      #打印更新值

my_new_car.increment_odometer(50)
my_new_car.read_odometer()        #打印递增值
        

输出如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值