二、补充说明
1、类只负责刻画,不负责执行
类是显示生活的一种刻画,是一种将现实抽象之后形成的模板,以构造对象的方式具体去实现类的模
板
2、构造函数__init__只能返回NoneType类型的内容,否则会报错
3、我们以点运算符调用对象的变量的时候,系统会先检查对象是否有该名称的变量,如若没有则检
查该对象所属类是否有该变量,再没有则检查该类的父类是否有,流程示意图为:对象—>类—>父类
4、"对象.dict"以字典的形式告诉我们对象的实例变量有哪些
5、"类.dict"以字典的形式告诉我们类所拥有的类变量以及实例方法、类方法及静态方法等
6、怎么在实例方法中调用类变量?self.class.class_variables
7、Python通过在变量与方法的前面添加双下划线实现其私有化,这种私有化是通过修改其名称实现
的,如果我们在名称后面也添加双下划线,类似于__init__,将无法实现私有化。
8、怎么将参数从子类传向父类并进行__init__赋值?
例:Human为父类,Student为子类
子类中:
def __init__(self,school,name,age):
self.school = school
# Human.__init__(**self**, name, age), 父类调用实例方法要将对象传过去
super(Student, self).__init__(name, age)
父类中:
def init(self, name, age):
self.name = name
self.age = age
9、在导入多个模块时,先写标准库模块的导入,再空一行写你自己编写的模块的导入,这样方便我
们在导入大量模块的时候认清楚各个模块的来源
10、类的实例
实例:
class Restuarant():
'''饭馆类'''
name = ''
number_served = 0
def __init__(self, restaurant_name, cuisine_type, number_served=0):
self.__restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = number_served
def describe_restaurant(self):
print("The restaurant' name is " + self.__restaurant_name.title())
print("Our cuisine_type is " + self.cuisine_type.title())
def __open_restaurant(self):
print("The restaurant is opening now!")
@staticmethod
def increment_number(cls):
cls.number_served += 1
print("类方法")
print(Restuarant.__dict__)
restuarant1 = Restuarant("Name1", "Chinese")
restuarant2 = Restuarant("Name2", "English", 2)
restuarant3 = Restuarant("Name3", "Spanish", 3)
print(restuarant1.number_served)
restuarant1.__init__("Name3", "Spanish", 3)
restuarant1.describe_restaurant()
restuarant1.__restaurant_name = "XX"
print(restuarant1.__restaurant_name)