python-类(python类方法和实例方法)

网友投稿 257 2022-08-19

python-类(python类方法和实例方法)

1 ##------------------------类--------------------

2 '''

3 在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。

4 编写类时,你定义一大类对象都有的通用行为。基于类创建 对象时,每个对象都自动具备

5 这种通用行为,然后可根据需要赋予每个对象独特的个性。

6

7 根据类来创建对象被称为 实例化,这让你能够使用类的实例。你将指定可在实例中存储什

8 么信息,定义可对这些实例执行哪些操作。你还将编写一些类来扩展既有类的功能,让相似

9 的类能够高效地共享代码。你将把自己编写的类存储在模块中,并在自己的程序文件中导入

10 其他程序员编写的类。

11 '''

12 ##总而言之,类像是一个模板,实例化就是根据模板做好的成品

13 ##创建和使用类

14

15 class Dog():

16 def __init__(self,name,age):

17 '''初始化属性name和age'''

18 self.name=name

19 self.age=age

20

21 def sit(self):

22 '''模拟小狗被命令时蹲下'''

23 print(str(self.name.title())+'蹲下!')

24

25 def roll_over(self):

26 '''模拟小狗被命令时打滚'''

27 print(str(self.name.title())+'打滚!')

28

29 ##实例化一个对象my_dog

30 my_dog=Dog('阿尔法',5)

31 ##访问属性

32 print('我的小狗的名字叫做:'+my_dog.name.title())

33 print(my_dog.name.title()+'今年已经有'+str(my_dog.age)+'岁了!')

34 ##调用类中的方法(函数)

35 my_dog.sit()

36 my_dog.roll_over()

37 ##创建多个实例:

38 #可按需求根据类创建任意数量的实例。

39 your_dog=Dog('贝塔',3)

40 your_dog.roll_over()

41

42

43

44 --------------------------------------------------------------------

45

46 class Car():

47 '''一次模拟汽车的简单尝试'''

48 def __init__(self,make,model,year,color):

49 '''初始化汽车的属性'''

50 self.make=make

51 self.model=model

52 self.year=year

53 self.color=color

54 self.odometer_reading=10##给定的默认值

55 def get_descriptive_name(self):

56 '''返回整洁的描述信息'''

57 long_name=str(self.year)+',由'+self.make+'公司'+'生产的'+self.model+self.color+'型号车的性能相当出色!'

58 return long_name.title()

59 def read_odometer(self):

60 '''打印汽车的里程数'''

61 print('这辆'+str(self.model)+'车已经行驶了'+str(self.odometer_reading)+'公里!')

62

63 #属性值的更新方法2:

64 def update_odomenter(self,mileage):

65 #扩展:禁止里程数回调

66 if mileage>=self.odometer_reading:

67 self.odometer_reading=mileage

68 else:

69 print('操作非法,拒绝!')

70

71 def increment_odometer(self,miles):

72 '''将里程表读数增加指定的量'''

73 self.odometer_reading+=miles

74 my_new_car=Car('GWC','悍马H2',2008,'银黑色')

75 print(my_new_car.get_descriptive_name())

76 print(str(my_new_car.read_odometer()))

77 ##修改属性的值:

78 #1.直接修改属性的值

79 my_new_car.odometer_reading=200##通过实例化对象直接访问并修改

80 my_new_car.read_odometer()

81

82 #2.通过方法修改属性的值

83 my_new_car.update_odomenter(300)##更新属性odometer_reading的值

84 my_new_car.read_odometer()

85 #3.通过方法对属性的值进行递增

86 '''

87 有时候需要将属性值递增特定的量,而不是将其设置为全新的值。假设我们购买了一辆二手

88 车,且从购买到登记期间增加了100英里的里程,下面的方法让我们能够传递这个增量,并相

89 应地增加里程表读数:

90 '''

91 my_new_car=Car('上海一汽','大众',2017,'银色')

92 print(my_new_car.get_descriptive_name())

93 my_new_car.update_odomenter(2000)

94 my_new_car.read_odometer()

95

96 my_new_car.increment_odometer(100)

97 my_new_car.read_odometer()

98

99

100 ##-----------继承---------------

101 class ElectricCar(Car):

102 '''电动汽车'''

103 def __init__(self,make,model,year,color):

104 '''初始化父类的属性'''

105 super().__init__(make,model,year,color)

106

107

108

109 my_tesla=ElectricCar('雅迪','雅迪电动车','2019','红色')

110 print(my_tesla.get_descriptive_name())

111 my_tesla.read_odometer()##//通过继承来的方法访问父类创建的默认值

112 '''

113 pythin2.7继承方法

114

115 class Car(object):

116 def __init__(self, make, model, year):

117 -- snip --

118

119 class ElectricCar(Car):

120 def __init__(self, make, model, year):

121 super(ElectricCar, self).__init__(make, model, year)

122 '''

123 ##给子类定义属性和方法

124 class Bus(Car):

125 '''公交汽车'''

126 def __init__(self,make,model,year,color):

127 '''初始化父类的属性'''

128 super().__init__(make,model,year,color)

129 self.battery_size=100##电瓶容量

130

131 def display_battery_size(self):

132 print('这辆'+str(self.model)+'的容量是'+str(self.battery_size))

133

134 #重写父类的方法

135 def read_odometer(self):

136 print('此公交汽车已经行驶:'+str(self.odometer_reading)+'公里!')

137 my_bus=Bus('天津一汽','2019-公交车','2019','墨绿色')

138 bus_massage=my_bus.get_descriptive_name()

139 print(bus_massage)

140 my_bus.display_battery_size()

141 ##调用重写父类的方法

142 my_bus.odometer_reading+=10

143 my_bus.read_odometer()

144

145

146 ##将实例化的对象用作属性

147 '''

148 使用代码模拟实物时,你可能会发现自己给类添加的细节越来越多:属性和方法清单以及文

149 件都越来越长。在这种情况下,可能需要将类的一部分作为一个独立的类提取出来。你可以将大

150 型类拆分成多个协同工作的小类。

151 '''

152 class bearing():

153 def __init__(self,name='30mm轴承',materials='碳性钢'):

154 '''初始化轴承的属性'''

155 self.name=name

156 self.materials=materials

157

158 def read_property(self):

159 '''返回整洁的描述信息'''

160 print(str(self.name)+'的材质是'+str(self.materials)+'打造的')

161

162 class private_car(Car):

163 '''私家车的属性'''

164 def __init__(self,make,model,year,color):

165 super().__init__(make,model,year,color)

166 self.number_of_passengers=4##可乘坐人数

167 self.Bearing=bearing()

168 def print_pricate_car_massage(self):

169 print('属性:'+'\n\t厂家:'+str(self.make)+'\n\t名称:'+str(self.model)+'\n\t生产日期:'+str(self.year)+'\n\t颜色:'+str(self.color))

170 print('载客量为:'+str(self.number_of_passengers))

171

172 my_private_car=private_car('上海一汽','宝马',2020,'蓝色')

173 my_private_car.print_pricate_car_massage()

174 my_private_car.bearing.read_property()

175

176 ##导入单个类(假设统计目录下的hello.py文件中有个hello_friend的类)

177 from hello import hello_friend

178 ##在一个模块中存储多个类

179 '''虽然同一个模块中的类之间应存在某种相关性,但可根据需要在一个模块中存储任意数量的类。'''

180 ##从一个模块中导入多个类(类与类之间用逗号隔开)

181 from hello import hello_friend,hello_teacher

182

183 ##导入整个模块

184 '''还可以导入整个模块,再使用句点表示法访问需要的类。这种导入方法很简单,代码也易

185 于阅读。由于创建类实例的代码都包含模块名,因此不会与当前文件使用的任何名称发生冲突。'''

186 import hello

187

188

189 ##导入模块中的所有类,要导入模块中的每个类,可使用下面的语法:

190 from module_name import *

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何让ython运行地超快的10个方法,新手必学(python运行方式)
下一篇:让你的电脑每天换一位小姐姐,一年都不重复
相关文章

 发表评论

暂时没有评论,来抢沙发吧~