面向对象编程(复习用)

三大编程范式:面向对象编程,面向对象编程,函数式编程

:把一类事物的相同特征和动作整合到一起就是类。抽象概念。

对象:就是基于类而创建的一个具体事物。

实例化:由类生产对象的过程就是实例化。

比如,类定义了一些特征和动作,那么98K是type 狙击枪,feature杀伤力大,装八倍镜,m24也具有这些特征,除了name不同。就可以将栓狙的共性结合在一起,特征也结合在一起。把他们全部包起来装好。

所以,面向对象设计:将一类具体事物的动作和数据整合在一起。

面向对象编程:用定义类+实例的方式去实现面向对象的设计。

#self其实就是一个字典形式
#声明类和函数相似
#class 类名: (后面可以不要括号,类名首字母大写)
#    '类的文档字符串'
#    '类体'

#实例化
# d1 = Data()  #括号是运行类,实例化,还没传入参数
#实例化的含义:

#属性
#实例是由类产生的,那么实例就应该得到类的属性。
#那么,类一般包含哪些属性呢?
#数据属性:就相当于是特征,比如名字type,这些都是通过变量获得的,所以是变量。
#函数属性:函数,在类中就是方法。
#类和对象都用点来访问自己的属性。 这句话背住。

#print(dir(class)) 查看数据属性名称和函数属性名称,还有内置属性名称。

#print(class.__dir__) #查看类的属性字典,可以看到数据属性和函数属性都存在这个字典中
#在这个字典中,key就是属性名,value就是属性值。
#那么,class.funcname() 本质就是去函数字典中找东西。

#对象相关
#实例化:由类产生对象过程。
#p1 = class(*args)  这个过程是实例化,p1就是实例。记得括号。

#在类中,必须要有一个初始化函数,去定制每一个对象的属性。 __init__#(这是啥意思?就是98km24是不同的东西,我去向狙击枪这个类实例化,获得98km24的对象,名称不同,威力不同,
#那么传入的参数就不同。这些参数需要再类中初始化,你才能调用属性。比如传入98k,然后初始化得到名称,这个名称
#在类的方法中获得它的威力和弹道,这样肯定需要初始化,不初始化类的方法就搞不好。__init__(实例的参数)
#在类中,定义成__init__会自动return成数值属性。
#__init__必须先有一个self属性名字,然后才是传入的参数。比如,self.name 就是给self传入了name属性,这个就是数值属性,
#name属性封装到self中,然后默认return self字典,name变成一个数值属性,name:value#实例化过程本质就是调用init. print(p1.__dict__)。所以,实例就是init#调用 print(p1.name) 因为name是数值属性,可以通过点调用,name属性对应了一个value,就会显示name对应的值。
#所以,如果调用class.func,如果后面没括号,就是调用这个函数的内存地址,想获得值,就要加括号和参数执行它。
#实例没有函数属性,但是可以从类中调用,因为作用域的关系,它会往init外面去找,找类那一层。
#怎么调?p1.function() 从实例调方法,相当于class.func(p1) p1传给了function#self就代表实例自己本身。



猜你喜欢

转载自blog.csdn.net/gaoyishu91/article/details/79999667