学习笔记:
方法、属性
方法__init__()是一个特殊的方法,每当你根据Dog类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。
我们将方法__init__()定义成了包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name和age)提供值。
方法__init__()创建一个表示特定小狗的示例,并使用我们提供的值来设置属性name和age。方法__init__()并未显式地包含return语句,但Python自动返回一个表示这条小狗的实例。
在引用类中的函数时,要用句点表示法。(★my_dog.sit(),不要把my_dog忘记!!!)
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
super()是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。(★不要忘记super后面的())
在子类中重写父类中的方法,可在子类中定义一个和父类中方法重名的方法。
导入类和导入函数模块的方法一致,注意父类要先导入。
python标准库:
要创建字典并记录其中的键—值对的添加顺序,可使用模块collections中的OrderedDict类。(一般来说,dict内部存放的顺序和key放入的顺序没有关系,但使用OrderedDict类可以使它的内部存放关系取决于和key放入的顺序。)
/问题:还是不是很懂字典内部存储的顺序和key的放入顺序无关。
看书随手写的代码:
class Dog():#创建类
def __init__(self,name,age):
self.name=name
self.age=age
def sit(self):
print(self.name+'-sit')
def jump(self):
print(self.name+'-jump')
my_dog=Dog('chency',20)#此后my_dog相当于self
my_dog.sit()
my_dog.jump()
print(my_dog.name)
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.lc=0
def read_lc(self):
print(self.lc)
def update_lc(self,mile):
if mile>=self.lc:
self.lc=mile
else:
print("you can't")
class Ele_car(Car):#继承父类Car
def __init__(self,make,model,year):
super().__init__(make,model,year)#super()是一个特殊函数,帮助Python将父类和子类关联起来
def print_car(self):#子类特殊的方法
print("good")
my_car=Car('nanjing','baoma','2020')
my_car.read_lc()
my_car.update_lc(100)
my_car.read_lc()
my_car.update_lc(80)
my_car.read_lc()
my_tesla = Ele_car('tesla', 'model s', '2016')
my_tesla.read_lc()
my_tesla.print_car()
学习心得:
这一章的内容一开始不能很好理解,所以花了一些时间消化。
这一篇文章写的很好,将“类”这个概念讲的很具体、很清晰。读完这一篇,看书上的内容就很轻松了。