面向对象编程

Posted zrx19960128

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程相关的知识,希望对你有一定的参考价值。

面向对象基础

面向对象编程(抽象)

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

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

优点:扩展性非常强

缺点:逻辑非常复杂

类与对象

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

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

# 定义学生
?
   # 姓名: 猪瑞星
   # 学号: 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
?
# 面向对象编程: 不同对象之间再交互

 

以上是关于面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章

Golang 面向对象编程

Python入门-6面向对象编程:01面向对象和面向过程区别-对象的进化

如何在C语言里实现“面向对象编程”

面向对象(对象和类)

面向对象编程——面向对象和面向过程

面向对象编程