一看就懂的Python基础之——【类】

中华5000年才出一个你,为什么不活出自我,活成自己喜欢的样子?——先去把今天活成自己不悔的样子吧。

一、创建和使用类 

下面通过一个类来讲解:

class Dog():
    '''一次模拟小狗的简单尝试'''
    def —__init__(self,name,age):
        self.name=name
        self.age=age
    def sit(self):
        '''模拟小狗被命令坐下'''
        print(self.name.title()+" is sitting now.")
    def roll(self):
        '''模拟小猫被命令打滚'''
        print(self.name.title()+" is rolling now.")

1、首字母大写的名称指的是类。类后面括号空白。类后紧跟对这个类的描述。

2、类中的函数称为方法。__init__()是每个类都要有的方法,当你用类创建实例时,Python会自动运行这个方法。前后有下划线是为了避免与普通方法发生冲突。

3、__init__(self,name,age)中参数self必不可少,还必须位于其它参数前面。方法与其它函数的唯一区别就是多了这么个第一位置的参数。self代表类的实例,也就是当前对象的地址。而self.class则指向类的地址。

4、方法__init__()包含三个形参:self、mame 、age。 为啥必须在方法定义中包含参数self呢?因为python调用 这个__init__()方法来创建类的实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

5、例如,创建Dog()实例时,Python将调用 Dog()类方法__init__()。我们将通过实参向Dog()传递名字和年龄。self会自动传递,我们不需要传递它。每当我们根据Dog()类创建实例时,都只需给最后两个形参提供值。

6、以self为前缀的变量都可以供类中的所有方法使用。还可以通过类的实例访问这些变量。可通过实例访问的变量称作属性。

下面创建一个实例:

#这里为了简洁易看,没有复制上面的代码到这里。

my_dog=Dog('hihi',6)

print("My dog's name is "+my_dog.name.title()+".")
print("My dog is "+str(age)+" years old.")

my_dog.sit()
my_dog.roll()

在执行第一句时,_init_()方法创建一个表示特定小狗的实例,并使用我们提供的值来设置属性name 和age。方法_init_()并未显式地包含return语句,但python自动返回一个表示这个小狗的实例。这们将这个实例存储在变量my_dog()中。在这里,命名约定很有用,通常约定大写字母是类,小写字母是实例。

【注意】__init__()方法名字中,左右的下划线各是两个 _ _init_ _()

【注意】方法的里面,至少要写一个self作为默认参,如果不写会报错。

下面讲三个应用:

1、给属性默认值,这是基本

2、直接修改属性值,这是一个早期方法

3、通过方法修改属性值,这是一个值得推广的办法。

下例是给属性默认值。

class Car():
    def __init__(self,make,battery=100):
        self.make=make
        self.battery=battery

 下例是直接修改属性值:

class Car():
    def __init__(self,make,battery=100):
        self.make=make
        self.battery=battery
car1=Car('Audi',85) #这是一种方法。
car1.battery=88  #这也是一种方法。

 下面是通过函数来修改:

class Car():
    def __init__(self,make,battery=100):
        self.make=make
        self.battery=battery
    def update_battery(self):
        if self.battery!=85:
            self.battery=85

car1=Car('Audi')
print(car1.battery)
car1.update_battery()
print(car1.battery)

二、继承

下面写一个电动车继承车类:

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


class Electric_Car(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery=battery
    def show_battery(self):
        print(self.battery)
    def update_battery(self):
        if self.battery!=85:
            self.battery=85

继承的写法有以下几点注意:

1、把父类写在子类的参数括号里。

2、子类的初始化函数的参数要和父类相同,且,子类的初始化参数里要有super().__init__(参数)语句。

3、子类独有的属性写在初始化函数中。

4、子类新的方法直接定义即可。

还可以将实例用作属性:

class Car():
    def __init__(self,make,model,year):
    '''描述一个汽车'''
        self.make=make
        self.model=model
        self.year=year

class Battery():
    '''专门描述汽车的电量相关'''
    def __init__(self,battery=70):
        self.battery=battery
        def show_battery(self):
        print(self.battery)

    def show_battery(self):
        print(self.battery)

    def update_battery(self):
        if self.battery!=85:
            self.battery=85

class Electric_Car(Car):
    '''继承汽车类,并包含一个电量类的实例作属性'''
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery=Battery()

car1=Electric_Car('Audo','s-450',3)
car1.battery.show_battery()  #注意,调用的时候是用实例的属性来调用 ,不能直接用实例来调用 

三、导入类

随着不断给类中加功能,代码变得很长。为使文件更简洁,把类存储在模块中。下例展示了一个汽车类:

'''一个用于描述汽车的类'''
class Car():
	def __init__(self,make,model,year):
		'''初始化汽车基本属性'''
		self.make=make
		self.model=model
		self.year=year
		self.odometer=0
		
	def get_descriptive_name(self):
		'''返回整洁的描述信息'''
		message=str(self.year)+' '+self.make+" "+self.model
		return message.title()
		
	def get_odometer(self):
		'''打印一条信息,指出汽车的里程数'''
		print("This car has "+str(self.odometer)+" miles on it.")
	
	def update_odometer(self,mileage):
		'''	将里程表设置为指定的值'''
		'''拒绝将里程表往回调'''
		if mileage>=self.odometer:
			self.odometer=mileage
		else:
			print("You can't roll back an odometer!")
			
	def increment_odometer(self,miles):
		'''将里程表增加指定的量'''
		self.odometer+=miles

在与上面的类同一文件夹下,再创建一个类导入汽车类,就可以使用汽车类。简洁而有效。如下:

from car import Car
#引入文件是没有.py后缀的。
#引入文件有注释一定要utf8。
#引入的类的方法后面别忘加括号。

my_new_Car=Car('audi','s-450',2016)
print(my_new_Car.get_descriptive_name())

my_new_Car.odometer=23
my_new_Car.get_odometer()

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

纸城

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

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

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

打赏作者

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

抵扣说明:

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

余额充值