|
Python编程从入门到实践笔记——类
Dog():
<span style="color: #0000ff;">def</span> <span style="color: #800080;">__init__</span><span style="color: #000000;">(self,name,age):
</span><span style="color: #800000;">"""</span><span style="color: #800000;">初始化属性name和age</span><span style="color: #800000;">"""</span><span style="color: #000000;">
self.name </span>=<span style="color: #000000;"> name
self.age </span>=<span style="color: #000000;"> age
</span><span style="color: #0000ff;">def</span><span style="color: #000000;"> sit(self):
</span><span style="color: #800000;">"""</span><span style="color: #800000;">模拟小狗被命令时蹲下</span><span style="color: #800000;">"""</span>
<span style="color: #0000ff;">print</span>(self.name.title() + <span style="color: #800000;">"</span><span style="color: #800000;"> is now sitting.</span><span style="color: #800000;">"</span><span style="color: #000000;">)
</span><span style="color: #0000ff;">def</span><span style="color: #000000;"> roll_over(self):
</span><span style="color: #800000;">"""</span><span style="color: #800000;">模拟小狗被命令时打滚</span><span style="color: #800000;">"""</span>
<span style="color: #0000ff;">print</span>(self.name.title() + <span style="color: #800000;">"</span><span style="color: #800000;"> rolled over!</span><span style="color: #800000;">"</span><span style="color: #000000;">)
<span style="color: #008000;">#<span style="color: #008000;">init()是一个特殊的方法,每当根据Dog类创建新实例时,Python都会自动运行它。 <span style="color: #008000;">
<span style="color: #008000;">在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。<span style="color: #008000;">
<span style="color: #008000;">方法init()定义成了包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。<span style="color: #008000;">
<span style="color: #008000;">Python调用这个init()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身<span style="color: #008000;">
<span style="color: #008000;">的引用, 让实例能够访问类中的属性和方法。 我们创建Dog 实例时,Python将调用Dog类的方法init() 。 <span style="color: #008000;">
<span style="color: #008000;">我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name 和age )提供值。
<span style="color: #008000;">#<span style="color: #008000;">2.根据类创建实例
my_dog = Dog(<span style="color: #800000;">'<span style="color: #800000;">willie<span style="color: #800000;">',6<span style="color: #000000;">)
<span style="color: #0000ff;">print(<span style="color: #800000;">"<span style="color: #800000;">My dog's name is <span style="color: #800000;">" + my_dog.name.title() + <span style="color: #800000;">"<span style="color: #800000;"> and he is <span style="color: #800000;">"+ str(my_dog.age) + <span style="color: #800000;">"<span style="color: #800000;"> years old.<span style="color: #800000;">"<span style="color: #000000;">)
<span style="color: #008000;">#<span style="color: #008000;">访问属性 .
<span style="color: #000000;">my_dog.name
<span style="color: #008000;">#<span style="color: #008000;">调用方法
<span style="color: #000000;">my_dog.sit()
<span style="color: #008000;">#<span style="color: #008000;">创建多个实例
my_dog = Dog(<span style="color: #800000;">'<span style="color: #800000;">willie<span style="color: #800000;">',6<span style="color: #000000;">)
your_dog = Dog(<span style="color: #800000;">'<span style="color: #800000;">lucy<span style="color: #800000;">',7<span style="color: #000000;">)
<span style="color: #008000;">#<span style="color: #008000;">9.2使用类和实例<span style="color: #008000;">
<span style="color: #008000;">1.Car类
<span style="color: #0000ff;">class<span style="color: #000000;"> Car():
<span style="color: #800000;">"""<span style="color: #800000;">一次模拟汽车的简单尝试<span style="color: #800000;">"""
<span style="color: #0000ff;">def <span style="color: #800080;">init<span style="color: #000000;">(self,make,model,year):
<span style="color: #800000;">"""<span style="color: #800000;">初始化描述汽车的属性<span style="color: #800000;">"""<span style="color: #000000;">
self.make =<span style="color: #000000;"> make
self.model =<span style="color: #000000;"> model
self.year =<span style="color: #000000;"> year
<span style="color: #008000;">#<span style="color: #008000;">添加属性odometer_reading,并设置默认值为0
self.odometer_reading =<span style="color: #000000;"> 0
</span><span style="color: #0000ff;">def</span><span style="color: #000000;"> get_odometer(self):
</span><span style="color: #0000ff;">print</span>(<span style="color: #800000;">"</span><span style="color: #800000;">This car has </span><span style="color: #800000;">"</span> + str(self.odometer_reading) + <span style="color: #800000;">"</span><span style="color: #800000;"> miles on it.</span><span style="color: #800000;">"</span><span style="color: #000000;">)
</span><span style="color: #0000ff;">def</span><span style="color: #000000;"> set_odometer(self,mileage):
self.odometer_reading </span>=<span style="color: #000000;"> mileage
</span><span style="color: #0000ff;">def</span><span style="color: #000000;"> get_descriptive_name(self):
</span><span style="color: #800000;">"""</span><span style="color: #800000;">返回整洁的描述性信息</span><span style="color: #800000;">"""</span><span style="color: #000000;">
long_name </span>= str(self.year) + <span style="color: #800000;">'</span> <span style="color: #800000;">'</span> + self.make + <span style="color: #800000;">'</span> <span style="color: #800000;">'</span> +<span style="color: #000000;"> self.model
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> long_name.title()
my_new_car = Car(<span style="color: #800000;">'<span style="color: #800000;">Audi<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">A4L<span style="color: #800000;">',2016<span style="color: #000000;">)
<span style="color: #0000ff;">print<span style="color: #000000;">(my_new_car.get_descriptive_name())
my_new_car.get_odometer()
<span style="color: #008000;">#<span style="color: #008000;">2.给属性指定默认值
<span style="color: #008000;">#<span style="color: #008000;">3.修改属性的值<span style="color: #008000;">
<span style="color: #008000;">直接修改
my_new_car.odometer_reading = 23<span style="color: #000000;">
my_new_car.get_odometer()
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|