Python面向对象程序设计总结

一、总结
在这里插入图片描述
图1 Python类主要内容思维导图

二、补充说明

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)
发布了11 篇原创文章 · 获赞 25 · 访问量 5971

猜你喜欢

转载自blog.csdn.net/qq_41196612/article/details/89354671