# '''面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。 # # 优点是:复杂度的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将会非常简单) # # 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身。 # # 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等。''' # # class Person: # # def __init__(self): # # pass # # def talk(self): # # print('talk') # # def eat(self): # # print('eat') # # # # person =Person() # # person.talk() # # person.eat() # # #先定义类 # #类是对象相似数据与功能的集合体 # #注意:类在定义阶段就运行了,会产生类的名称空间 # class Student: # stu_school ='gg_university' # def tell_info(self): # print('查询信息功能') # def set_info(self): # print('更改数据功能') # # #属性访问方法 # #1、数据属性 # #2、方法属性 # #再调用类产生对象 # stu=Student() # stu.set_info() # # # 在程序中,务必保证:先定义(类),后使用(产生对象) # # PS: # # 1. # # 在程序中特征用变量标识,技能用函数标识 # # 2. # # 因而类中最常见的无非是:变量和函数的定义 # # # # 程序中的类 # class OldboyStudent: # school = 'oldboy' # # def learn(self): # print('is learning') # # def eat(self): # print('is eating') # # def sleep(self): # print('is sleeping') # # # 注意: # # # # # 1. # # 类中可以有任意python代码,这些代码在类定义阶段便会执行 # # 2. # # 因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过OldboyStudent.__dict__查看 # # 3. # # 对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但python为我们提供专门的.语法 # # 4. # # 点是访问属性的语法,类中定义的名字,都是类的属性 # # # # # 程序中类的用法 # # .:专门用来访问属性,本质操作的就是__dict__ # OldboyStudent.school # 等于经典类的操作OldboyStudent.__dict__['school'] # OldboyStudent.school = 'Oldboy' # 等于经典类的操作OldboyStudent.__dict__['school']='Oldboy' # OldboyStudent.x = 1 # 等于经典类的操作OldboyStudent.__dict__['x']=1 # del OldboyStudent.x # 等于经典类的操作OldboyStudent.__dict__.pop('x') # # # 程序中的对象 # # 调用类,或称为实例化,得到对象 # s1 = OldboyStudent() # s2 = OldboyStudent() # s3 = OldboyStudent() # # # # 如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,这就用到了__init__ # # 注意:该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但一定不能有返回值 # class OldboyStudent: # # def __init__(self, name, age, sex): # self.name = name # self.age = age # self.sex = sex # # # # # s1 = OldboyStudent('李坦克', '男', 18) # 先调用类产生空对象s1,然后调用OldboyStudent.__init__(s1,'李坦克','男',18) # s2 = OldboyStudent('王大炮', '女', 38) # s3 = OldboyStudent('牛榴弹', '男', 78) # # # 程序中对象的用法 # # 执行__init__,s1.name='牛榴弹',很明显也会产生对象的名称空间 # s2.__dict__ # {'name': '王大炮', 'age': '女', 'sex': 38} # # s2.name # s2.__dict__['name'] # s2.name = '王三炮' # s2.__dict__['name']='王三炮' # s2.course = 'python' # s2.__dict__['course']='python' # del s2.course # s2.__dict__.pop('course') # # 复制代码 # # !!!细说__init__方法!!! # # # # 复制代码 # # # # 方式一、为对象初始化自己独有的特征 # class People: # country = 'China' # x = 1 # # def run(self): # print('----->', self) # # # # 实例化出三个空对象 # obj1 = People() # obj2 = People() # obj3 = People() # # # 为对象定制自己独有的特征 # obj1.name = 'egon' # obj1.age = 18 # obj1.sex = 'male' # # obj2.name = 'lxx' # obj2.age = 38 # obj2.sex = 'female' # # obj3.name = 'alex' # obj3.age = 38 # obj3.sex = 'female' # # # # print(obj1.__dict__) # # print(obj2.__dict__) # # print(obj3.__dict__) # # print(People.__dict__) # # # # 方式二、为对象初始化自己独有的特征 # class People: # country = 'China' # x = 1 # # def run(self): # print('----->', self) # # # # 实例化出三个空对象 # obj1 = People() # obj2 = People() # obj3 = People() # # # # 为对象定制自己独有的特征 # def chu_shi_hua(obj, x, y, z): # obj=obj1,x='egon',y=18,z='male' # obj.name = x # obj.age = y # obj.sex = z # # # chu_shi_hua(obj1, 'egon', 18, 'male') # chu_shi_hua(obj2, 'lxx', 38, 'female') # chu_shi_hua(obj3, 'alex', 38, 'female') # # # # 方式三、为对象初始化自己独有的特征 # class People: # country = 'China' # x = 1 # # def chu_shi_hua(obj, x, y, z): # obj=obj1,x='egon',y=18,z='male' # obj.name = x # obj.age = y # obj.sex = z # # def run(self): # print('----->', self) # # # obj1 = People() # # print(People.chu_shi_hua) # People.chu_shi_hua(obj1, 'loky', 18, 'male') # # obj2 = People() # People.chu_shi_hua(obj2, 'lxx', 38, 'female') # # obj3 = People() # People.chu_shi_hua(obj3, 'doky', 38, 'female') # # # # 方式四、为对象初始化自己独有的特征 # class People: # country = 'China' # x = 1 # # def __init__(obj, x, y, z): # obj=obj1,x='egon',y=18,z='male' # obj.name = x # obj.age = y # obj.sex = z # # def run(self): # print('----->', self) # # # obj1 = People('egon', 18, 'male') # People.__init__(obj1,'egon',18,'male') # obj2 = People('lxx', 38, 'female') # People.__init__(obj2,'lxx',38,'female') # obj3 = People('alex', 38, 'female') # People.__init__(obj3,'alex',38,'female') # # # # __init__方法 # # 强调: # # 1、该方法内可以有任意的python代码 # # 2、一定不能有返回值 # class People: # country = 'China' # x = 1 # # def __init__(obj, name, age, sex): # obj=obj1,x='egon',y=18,z='male' # # if type(name) is not str: # # raise TypeError('名字必须是字符串类型') # obj.name = name # obj.age = age # obj.sex = sex # # def run(self): # print('----->', self) # # # # obj1=People('egon',18,'male') # obj1 = People(3537, 18, 'male') # # # print(obj1.run) # # obj1.run() #People.run(obj1) # # print(People.run) # 练习 class Student: def __init__(self, name, no, age, sex): self.name = name self.no = no self.age = age self.sex =sex def check_student_text(self): print(f'姓名{self.name},学号{self.no},年龄{self.age},性别{self.sex}') def alter_student_mes(self,x,y,z,k): self.x =x self.y =y self.z= z self.k=k print(f'修改后的学生信息为:姓名{x},学号{y},年龄{z},性别{k}') stu1=Student('loky',2020120801114,18,'male') stu1.check_student_text()
Python入门之面向对象编程介绍
最新推荐文章于 2024-10-02 10:53:34 发布