类
创建Dog类
根据Dog类创建的每个实例都将存储名字和年龄。我们将赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力:
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_voer(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + "is now rolled over!")
首字母大写的名称指的是类。
_init_类中函数的方法 _两个下划线
self必不可少的,只需要给后面name和age形参提供值即可。
根据类创建实例
可将类视为有关如何创建实例的说明
class Dog():
---snip---
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.")
命名约定
通常快认为首字母大写的名称指的是类(Dog),而小写的名称(my_dog)指的是根据类创建的实例
访问属性
访问实例的属性,可以使用句点表示法,my_dog的属性name的值 :my_dog.name
调用方法
根据Dog类创建实例后,就可以使用句点表示法来调用Dog
class Dog():
---snip---
my_dog = Dog('willie',6)
my_dog.sit()
my_dog.roll_over()
创建多个实例
class Dog():
---snip---
my_dog = Dog('willie',6)
your_dog = Dog('lucy',3)
print("My dog's name is "+my_dog.name.title()+".")
print("My dog is" +str(my_dog.age)+ " years old.")
my_dog.sit()
print("Your dog's name is "+your_dog.name.title()+".")
print("Your dog is" +str(your_dog.age)+ " years old.")
your_dog.sit()
使用类和实例
Car类
class Car():
"""一次模拟汽车的简单尝试"""
def _init_(self,make,model,year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name = str(self.year)+' '+self.make +' ' +self.model
return long_name.title()
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
给属性指定默认值
类中的每个属性都必须有初始值,哪怕这个值是0或空字符串。如设置默认值,在方法_init_()内指定这种初始值是可行的;但是如果对某个属性这样做了,就不需要包含为它提供初始值的形参了。
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):
----snip----
def read_odometer(self):
""" 打印一条指出汽车里程的消息"""
print("This car has "+str(self.odometer_reading)+ '' miles on it.")
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
修改属性的值
三种方法:1直接通过实例进行修改,2通过方法进行设置,3通过方法进行递增(增加特定的值)
直接通过实例进行修改
class Car():
----sinp---
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
通过方法修改属性的值 update_odometer()方法
class Car():
----sinp---
def update_odometer(self,mileage):
""" 将里程表读数设置为指定的值"""
self.odometer_reading = mileage
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(23)
my_new_car.read_odometer()
禁止任何人将里程表读数往回调
class Car():
----sinp---
def update_odometer(self,mileage):
"""
将里程表读数设置为指定的值
禁止将里程表读数往回调
"""
if mileage >=self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
通过方法向属性的值进行递增
class Car():
----sinp---
def update_odometer(self,mileage):
----sinp----
def increment_odometer(self,miles):
""" 将里程表读数增加指定的量"""
self.odometer_reading += miles
my_used_car.update_odometer(23500)
my_used_car.read_odometer()
my_used_car.increment_odometer(100)
my_used_car.read_odometer()