面向对象编程

面向对象基础

面向对象编程(抽象)

对象:特征和技能的结合体

面向对象编程:一个个对象进行交互

优点:扩展性非常强

缺点:逻辑非常复杂

类与对象

类(类别):一系列具有相同特征和技能的对象

现实世界中先有对象,后有类

# 定义学生

   # 姓名: 猪瑞星
   # 学号: 222222
   # 学校: oldboy
       # 技能: 选课,三十六变


   # 姓名: 孔悟空
   # 学号: 111111
   # 学校: oldboy
       # 技能: 选课,七十二变

   # 姓名: 雷公
   # 学号: 666666
   # 学校: oldboy
       # 技能: 选课,电闪雷鸣,开车
       
# 定义老师

   # 姓名:tank
   # 学校:oldboy
       # 技能:教课,piao

   # 姓名:nick
   # 学校:oldboy
       # 技能:教课,看书

 

Python中先有类,再有对象

class 类名(驼峰体):  # 定义类,会直接运行类体代码
   # 定义一系列特征
   # 定义一系列方法
   
对象1 = 类名()  # 实例化出对象

给对象定制独有的特征

class OldBoyStudent:
   school = 'oldboy'
   
   def __init__(self, name ,age):
       self.name = name
       self.age = age

   def choose_course(self):
       print('is choosing course')
       
stu1 = OldBoyStudent('a',1)
stu1.school

stu2 = OldBoyStudent('b',2)
stu2.scool

对象的属性查找顺序

class OldBoyStudent:
   school = 'oldboy'
   name = 'c'
   
   def __init__(self, name ,age):
       self.name = name
       self.age = age

   def choose_course(self):
       print('is choosing course')
       
stu1 = OldBoyStudent('a',1)
stu1.school

stu2 = OldBoyStudent('b',2)
stu2.scool

先从对象本身查找,然后从类中查找,类中也没有则报错

类与对象的绑定方法

class OldBoyStudent:
   school = 'oldboy'
   
   def __init__(self, name ,age):
       self.name = name
       self.age = age

   def choose_course(self):
       print(id(self))  # 10000
       print(self.school)
       print(f'{self.name} is choosing course')
       
stu1 = OldBoyStudent('a',1)
stu1.choose_course()  # self是对象本身
print(id(stu1))  # 10000

OldBoyStudent.choose_course(stu1)

类与数据类型

lis = list([1,2,3])
lis2 = list([1,2,3])
lis.append(4)
# list.append(lis,4)

对象的高度整合

对象会有一大堆属性/数据,还会有一大堆方法来操作这些属性,然后对于不同的对象,这些属性又不同.

 

 

用Python定义一个类

class Foo:
   pass

obj = Foo()

obj.__dict__ # dict()

obj.__dict__['count']  # 太麻烦了

obj.count  # 简单化了

obj.number = 3

def init(obj,name,age,gender):
   obj.name = name
   obj.age = age
   obj.gender = gender

init(obj,'nick','18','male')  # 麻烦
init(obj1, 'tank','73','female')

class OldBoyStudent:
   name = ''
   
   def __init__(self,name,age,gender):  # self是对象本身 # __开头的方法会在某种情况自动调用,__init__在类实例化的时候自动调用
       self.name = name
       self.age = age
       self.gender = gender
       
       
stu1 = OldBoyStudent('nick','18','male')

# 查找顺序 ,先从对象本身寻找,然后再去类中寻找,找不到报错


# 类与数据类型

lis = [1,2,3,4]  # lis = list([1,2,3,4])
s = 'sdfsd'  # s = str('sdfsd')

lis.append(5)
list.append(lis,5)

# 一个rw类赋予rw一对特征和一些技能,

# 类或对象就是一堆特征和技能的结合体,一般这个技能是拿来操控这个特征的

# rw1,rw2,rw3

# 面向对象编程: 不同对象之间再交互

 

原文地址:https://www.cnblogs.com/zrx19960128/p/11060983.html